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-23 18:34:58.218750000 +0800 +++ new/slideshow/source/engine/shapes/drawshape.cxx 2008-01-23 18:34:36.046875000 +0800 @@ -929,8 +929,14 @@ } // hyperlink support - void DrawShape::prepareHyperlinkIndices() + void DrawShape::prepareHyperlinkIndices() const { + if ( !maHyperlinkIndices.empty()) + { + maHyperlinkIndices.clear(); + maHyperlinkRegions.clear(); + } + sal_Int32 nIndex = 0; for ( MetaAction * pCurrAct = mpCurrMtf->FirstAction(); pCurrAct != 0; pCurrAct = mpCurrMtf->NextAction() ) @@ -1299,6 +1305,11 @@ { ensureVerboseMtfComments(); + if ( hasHyperlinks()) + { + prepareHyperlinkIndices(); + } + return maSubsetting.getTreeNode( nNodeIndex, eNodeType ); } 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-23 18:32:38.656250000 +0800 +++ new/slideshow/source/engine/shapes/drawshape.hxx 2008-01-23 18:31:15.437500000 +0800 @@ -296,7 +296,7 @@ void ensureVerboseMtfComments() const; bool hasIntrinsicAnimation() const; bool hasHyperlinks() const; - void prepareHyperlinkIndices(); + void prepareHyperlinkIndices() const; /// The associated XShape ::com::sun::star::uno::Reference< @@ -354,7 +354,7 @@ typedef ::std::pair HyperlinkIndexPair; typedef ::std::vector HyperlinkIndexPairVector; - HyperlinkIndexPairVector maHyperlinkIndices; + mutable HyperlinkIndexPairVector maHyperlinkIndices; mutable HyperlinkRegions maHyperlinkRegions; /// Delegated subset handling