sw/source/filter/ww8/ww8par5.cxx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
New commits: commit d66458347f552cbd436d82700626d45eeb1f80fb Author: Justin Luth <justin_l...@sil.org> Date: Tue Mar 10 13:12:30 2015 +0300 tdf#68963 avoid __refheading__ regression reported in tdf#89482 bugfix tdf#68963 (scheduled for 4.3.7) marked all __refheading__ bookmarks at TOC, but those crossreferences were deleted if they are not recorded in aReferencedTOCBookmarks. I decided to NOT introduce the full fix (which allows LO to author a .doc with working cross-references) into the stable 4.3 branch to ensure there are no further regressions. This patch both avoids a regression and allows sharing of crossref documents authored in LO 4.4.2+. Change-Id: I5d8b979bf1b884cbf74b31d875dc7c80a6c4b903 Reviewed-on: https://gerrit.libreoffice.org/14865 Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx index e4f9a6f..4b35205 100644 --- a/sw/source/filter/ww8/ww8par5.cxx +++ b/sw/source/filter/ww8/ww8par5.cxx @@ -100,7 +100,7 @@ namespace // #120879# - helper method to identify a bookmark name to match the internal TOC bookmark naming convention bool IsTOCBookmarkName( const ::rtl::OUString& rName ) { - return rName.startsWith("_Toc") || rName.startsWith(IDocumentMarkAccess::GetCrossRefHeadingBookmarkNamePrefix()); + return rName.startsWith("_Toc") || rName.startsWith(IDocumentMarkAccess::GetCrossRefHeadingBookmarkNamePrefix()+"_Toc"); } ::rtl::OUString EnsureTOCBookmarkName( const ::rtl::OUString& rName ) @@ -1960,6 +1960,15 @@ eF_ResT SwWW8ImplReader::Read_F_Ref( WW8FieldDesc*, OUString& rStr ) OUString sBkmName(GetMappedBookmark(sOrigBkmName)); + // #i120879# add cross reference bookmark name prefix, if it + // matches internal TOC bookmark naming convention + if ( IsTOCBookmarkName( sBkmName ) ) + { + sBkmName = EnsureTOCBookmarkName(sBkmName); + // track <sBookmarkName> as referenced TOC bookmark. + pReffedStck->aReferencedTOCBookmarks.insert( sBkmName ); + } + SwGetRefField aFld( (SwGetRefFieldType*)rDoc.GetSysFldType( RES_GETREFFLD ), sBkmName,REF_BOOKMARK,0,eFormat);
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits