sw/source/core/txtnode/ndtxt.cxx | 3 --- sw/source/filter/basflt/shellio.cxx | 17 +++++++++++++++++ sw/source/uibase/app/docsh2.cxx | 11 ----------- 3 files changed, 17 insertions(+), 14 deletions(-)
New commits: commit c782dc3441ef29056ba146e0798637b923bcf5f3 Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Tue Mar 5 14:12:27 2019 +0100 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Thu Mar 7 17:44:57 2019 +0100 sw_redlinehide: fix RSID related asserts regression Due to sw_redlinehide the SwTextNode::MakeFrame() is skipped on SwTextNodes that are merged due to redlining. But then the IgnoreStart/IgnoreEnd flags on the hints are not initialised and some assert like assert(pHt->IsFormatIgnoreStart()) fails. tdf90056-1.odt is an example document. There doesn't appear to be a convenient place to initialise it per-node as it is finished; the ODF import inserts APPEND_PARAGRAPH before inserting the hints themselves. So remove the initialisation from MakeFrame() and just do it in SwReader::Read(). Change-Id: Ib33fe3033fc05bd2f5ef2ac8d059d587642ccf48 Reviewed-on: https://gerrit.libreoffice.org/68748 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit d55e75d9173fd0d5928bae45ed49d3c105140468) Reviewed-on: https://gerrit.libreoffice.org/68768 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index e8e26348ec85..02330c6e811e 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -279,9 +279,6 @@ void SwTextNode::FileLoadedInitHints() SwContentFrame *SwTextNode::MakeFrame( SwFrame* pSib ) { - // fdo#52028: ODF file import does not result in MergePortions being called - // for every attribute, since that would be inefficient. So call it here. - FileLoadedInitHints(); SwContentFrame *pFrame = new SwTextFrame( this, pSib ); return pFrame; } diff --git a/sw/source/filter/basflt/shellio.cxx b/sw/source/filter/basflt/shellio.cxx index e0a675911ef3..dcbe320bd0af 100644 --- a/sw/source/filter/basflt/shellio.cxx +++ b/sw/source/filter/basflt/shellio.cxx @@ -55,6 +55,7 @@ #include <poolfmt.hxx> #include <fltini.hxx> #include <docsh.hxx> +#include <ndtxt.hxx> #include <redline.hxx> #include <swerror.h> #include <paratr.hxx> @@ -63,6 +64,15 @@ using namespace ::com::sun::star; +static bool sw_MergePortions(SwNode *const& pNode, void *) +{ + if (pNode->IsTextNode()) + { + pNode->GetTextNode()->FileLoadedInitHints(); + } + return true; +} + ErrCode SwReader::Read( const Reader& rOptions ) { // copy variables @@ -338,6 +348,13 @@ ErrCode SwReader::Read( const Reader& rOptions ) } } + // fdo#52028: ODF file import does not result in MergePortions being called + // for every attribute, since that would be inefficient. So call it here. + // This is only necessary for formats that may contain RSIDs (ODF,MSO). + // It's too hard to figure out which nodes were inserted in Insert->File + // case (redlines, flys, footnotes, header/footer) so just do every node. + mxDoc->GetNodes().ForEach(&sw_MergePortions); + mxDoc->SetInReading( false ); mxDoc->SetInXMLImport( false ); diff --git a/sw/source/uibase/app/docsh2.cxx b/sw/source/uibase/app/docsh2.cxx index 2a0a5c5fa6d5..c4c6d19b0ede 100644 --- a/sw/source/uibase/app/docsh2.cxx +++ b/sw/source/uibase/app/docsh2.cxx @@ -1672,15 +1672,6 @@ SfxInPlaceClient* SwDocShell::GetIPClient( const ::svt::EmbeddedObjectRef& xObjR return pResult; } -static bool lcl_MergePortions(SwNode *const& pNode, void *) -{ - if (pNode->IsTextNode()) - { - pNode->GetTextNode()->FileLoadedInitHints(); - } - return true; -} - int SwFindDocShell( SfxObjectShellRef& xDocSh, SfxObjectShellLock& xLockRef, const OUString& rFileName, @@ -1771,8 +1762,6 @@ int SwFindDocShell( SfxObjectShellRef& xDocSh, xDocSh = static_cast<SfxObjectShell*>(xLockRef); if (xDocSh->DoLoad(xMed.release())) { - SwDoc const& rDoc(*pNew->GetDoc()); - const_cast<SwDoc&>(rDoc).GetNodes().ForEach(&lcl_MergePortions); return 2; } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits