sw/source/core/doc/DocumentContentOperationsManager.cxx | 5 ++++- sw/source/core/doc/docbm.cxx | 16 +++++++++++++--- sw/source/core/txtnode/swfont.cxx | 2 ++ 3 files changed, 19 insertions(+), 4 deletions(-)
New commits: commit a0fa6911a013dc5cc844fdbee13132a467f4a437 Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Tue Oct 15 12:41:37 2019 +0200 Commit: Michael Stahl <michael.st...@cib.de> CommitDate: Wed Oct 23 13:03:14 2019 +0200 sw: fix copying of fieldmarks in lcl_CopyBookmarks() Surprisingly this handles CHECKBOX_FIELDMARK differently than the others but clearly it's a bug not to copy a fully selected TEXT_FIELDMARK as seen in CppunitTest_sw_ooxmlexport testMultiPageToc, where a header is copied with its CH_TXT_ATR_FIELD* but not the fieldmark. Change-Id: Ibf4d934ea834c1ac9fe4e541259605a745246049 Reviewed-on: https://gerrit.libreoffice.org/80914 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx index baff9f898f4d..c7faedd49eab 100644 --- a/sw/source/core/doc/DocumentContentOperationsManager.cxx +++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx @@ -251,7 +251,10 @@ namespace if ( rMarkStart >= rStt && rMarkEnd <= rEnd && ( bIsNotOnBoundary || aMarkType == IDocumentMarkAccess::MarkType::ANNOTATIONMARK - || aMarkType == IDocumentMarkAccess::MarkType::CHECKBOX_FIELDMARK ) ) + || aMarkType == IDocumentMarkAccess::MarkType::TEXT_FIELDMARK + || aMarkType == IDocumentMarkAccess::MarkType::CHECKBOX_FIELDMARK + || aMarkType == IDocumentMarkAccess::MarkType::DROPDOWN_FIELDMARK + || aMarkType == IDocumentMarkAccess::MarkType::DATE_FIELDMARK)) { vMarksToCopy.push_back(pMark); } commit 19a559b0ec9b806519c405651d6d2b2e14712b4a Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Mon Oct 14 16:55:50 2019 +0200 Commit: Michael Stahl <michael.st...@cib.de> CommitDate: Wed Oct 23 13:02:52 2019 +0200 sw: SwSubFont::GetTextSize_() assert on presumably dead code Change-Id: Iced0776a719dbc7e9d19db7bd547c408caa6a04f Reviewed-on: https://gerrit.libreoffice.org/80913 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> diff --git a/sw/source/core/txtnode/swfont.cxx b/sw/source/core/txtnode/swfont.cxx index 4de9b2b2ee90..9816212aa690 100644 --- a/sw/source/core/txtnode/swfont.cxx +++ b/sw/source/core/txtnode/swfont.cxx @@ -1118,6 +1118,7 @@ Size SwSubFont::GetTextSize_( SwDrawTextInfo& rInf ) if (TextFrameIndex(1) == rInf.GetLen() && CH_TXT_ATR_FIELDSTART == rInf.GetText()[sal_Int32(rInf.GetIdx())]) { + assert(!"this is presumably dead code"); TextFrameIndex const nOldIdx(rInf.GetIdx()); TextFrameIndex const nOldLen(rInf.GetLen()); const OUString aNewText(CH_TXT_ATR_SUBST_FIELDSTART); @@ -1131,6 +1132,7 @@ Size SwSubFont::GetTextSize_( SwDrawTextInfo& rInf ) else if (TextFrameIndex(1) == rInf.GetLen() && CH_TXT_ATR_FIELDEND == rInf.GetText()[sal_Int32(rInf.GetIdx())]) { + assert(!"this is presumably dead code"); TextFrameIndex const nOldIdx(rInf.GetIdx()); TextFrameIndex const nOldLen(rInf.GetLen()); const OUString aNewText(CH_TXT_ATR_SUBST_FIELDEND); commit d426964c0d3e42058f93f764eab1257cf9d21d4c Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Mon Oct 14 16:45:28 2019 +0200 Commit: Michael Stahl <michael.st...@cib.de> CommitDate: Wed Oct 23 13:02:34 2019 +0200 sw: getFieldmarkFor() and GetCurrentFieldmark() return innermost one In case of nested fieldmarks, this seems plausible to me. Change-Id: Iefa6a3836421fc93d7687eeb608f21d63fb45e81 Reviewed-on: https://gerrit.libreoffice.org/80912 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx index 4f94baab5c90..68914f38c0b3 100644 --- a/sw/source/core/doc/docbm.cxx +++ b/sw/source/core/doc/docbm.cxx @@ -1293,13 +1293,23 @@ namespace sw { namespace mark IFieldmark* MarkManager::getFieldmarkFor(const SwPosition& rPos) const { - auto const pFieldmark = find_if( + auto itFieldmark = find_if( m_vFieldmarks.begin(), m_vFieldmarks.end(), [&rPos] (const ::sw::mark::MarkBase *const pMark) { return pMark->IsCoveringPosition(rPos); } ); - if(pFieldmark == m_vFieldmarks.end()) + if (itFieldmark == m_vFieldmarks.end()) return nullptr; - return dynamic_cast<IFieldmark*>(*pFieldmark); + auto pFieldmark(*itFieldmark); + for ( ; itFieldmark != m_vFieldmarks.end() + && (**itFieldmark).IsCoveringPosition(rPos); ++itFieldmark) + { // find the innermost fieldmark + if (pFieldmark->GetMarkStart() < (**itFieldmark).GetMarkStart() + || (**itFieldmark).GetMarkEnd() < pFieldmark->GetMarkEnd()) + { + pFieldmark = *itFieldmark; + } + } + return dynamic_cast<IFieldmark*>(pFieldmark); } void MarkManager::deleteFieldmarkAt(const SwPosition& rPos) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits