diff -uNr old/slideshow/source/engine/animationnodes/animationbasenode.cxx new/slideshow/source/engine/animationnodes/animationbasenode.cxx --- old/slideshow/source/engine/animationnodes/animationbasenode.cxx 2008-01-17 16:19:51.828125000 +0800 +++ new/slideshow/source/engine/animationnodes/animationbasenode.cxx 2008-01-17 16:20:24.015625000 +0800 @@ -153,6 +153,11 @@ mpShape->getTreeNodeSupplier().getTreeNode( aTarget.Paragraph, DocTreeNode::NODETYPE_LOGICAL_PARAGRAPH ) ); + + if ( mpShape->getTreeNodeSupplier().hasHyperlinks()) + { + mpShape->getTreeNodeSupplier().prepareHyperlinkIndices(); + } // CAUTION: the creation of the subset shape // _must_ stay in the node constructor, since diff -uNr old/slideshow/source/engine/shapes/drawshape.cxx new/slideshow/source/engine/shapes/drawshape.cxx --- old/slideshow/source/engine/shapes/drawshape.cxx 2008-01-17 16:19:25.906250000 +0800 +++ new/slideshow/source/engine/shapes/drawshape.cxx 2008-01-17 16:17:20.687500000 +0800 @@ -931,6 +931,12 @@ // hyperlink support void DrawShape::prepareHyperlinkIndices() { + if ( !maHyperlinkIndices.empty()) + { + maHyperlinkIndices.clear(); + maHyperlinkRegions.clear(); + } + sal_Int32 nIndex = 0; for ( MetaAction * pCurrAct = mpCurrMtf->FirstAction(); pCurrAct != 0; pCurrAct = mpCurrMtf->NextAction() ) diff -uNr old/slideshow/source/engine/shapes/drawshape.hxx new/slideshow/source/engine/shapes/drawshape.hxx --- old/slideshow/source/engine/shapes/drawshape.hxx 2008-01-17 16:30:41.296875000 +0800 +++ new/slideshow/source/engine/shapes/drawshape.hxx 2008-01-17 16:32:03.375000000 +0800 @@ -296,7 +296,7 @@ void ensureVerboseMtfComments() const; bool hasIntrinsicAnimation() const; - bool hasHyperlinks() const; + virtual bool hasHyperlinks() const; void prepareHyperlinkIndices(); /// The associated XShape diff -uNr old/slideshow/source/inc/doctreenodesupplier.hxx new/slideshow/source/inc/doctreenodesupplier.hxx --- old/slideshow/source/inc/doctreenodesupplier.hxx 2008-01-17 16:24:28.593750000 +0800 +++ new/slideshow/source/inc/doctreenodesupplier.hxx 2008-01-17 16:24:00.406250000 +0800 @@ -151,6 +151,9 @@ virtual DocTreeNode getSubsetTreeNode( const DocTreeNode& rParentNode, sal_Int32 nNodeIndex, DocTreeNode::NodeType eNodeType ) const = 0; // throw ShapeLoadFailedException; + + virtual void prepareHyperlinkIndices() = 0; + virtual bool hasHyperlinks() const = 0; }; }