diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-12-13 10:35:36 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-12-13 14:10:00 +0000 |
commit | c117ab838b49b355a3f3fa48632a43284c989ffa (patch) | |
tree | 8a49d598e1e093678f67ef0ca5bd2865fdde5e26 | |
parent | 82f25d5de546225548725e4056fdf1148fe605eb (diff) |
i.e. revert
commit 162c72d64077d9e0dae820d881ce2b56a5b2040c
Author: Caolán McNamara <caolanm@redhat.com>
Date: Fri Jan 23 13:17:39 2015 +0000
and
commit ad50b9a8636e0ee2f3c80669e8dde96577b26c4e
Author: Caolán McNamara <caolanm@redhat.com>
Date: Fri Jan 23 15:52:58 2015 +0000
Related: fdo#78599 wrong method
and restore the original RegisterToFormat logic, and
instead block setting modifications of the document
until the explicit SetModified call to avoid the
original problem of trying to generate a preview
of the document during the section where it cannot be
done
Change-Id: I9dbec0a371d4d747b780aa271789d50a46eccefd
Reviewed-on: https://gerrit.libreoffice.org/31917
Reviewed-by: Justin Luth <justin_luth@sil.org>
Tested-by: Justin Luth <justin_luth@sil.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | sw/source/core/docnode/ndtbl.cxx | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx index f6540bbf337e..df38c79bd719 100644 --- a/sw/source/core/docnode/ndtbl.cxx +++ b/sw/source/core/docnode/ndtbl.cxx @@ -719,6 +719,11 @@ const SwTable* SwDoc::TextToTable( const SwInsertTableOptions& rInsTableOpts, } } + //Resolves: tdf#87977, tdf#78599, disable broadcasting modifications + //until after RegisterToFormat is completed + bool bEnableSetModified = getIDocumentState().IsEnableSetModified(); + getIDocumentState().SetEnableSetModified(false); + SwTableNode* pTableNd = GetNodes().TextToTable( aRg, cCh, pTableFormat, pLineFormat, pBoxFormat, getIDocumentStylePoolAccess().GetTextCollFromPool( RES_POOLCOLL_STANDARD ), pUndo ); @@ -744,6 +749,7 @@ const SwTable* SwDoc::TextToTable( const SwInsertTableOptions& rInsTableOpts, // Set Orientation in the Table's Format pTableFormat->SetFormatAttr( SwFormatHoriOrient( 0, eAdjust ) ); + rNdTable.RegisterToFormat(*pTableFormat); if( pTAFormat || ( rInsTableOpts.mnInsMode & tabopts::DEFAULT_BORDER) ) { @@ -873,6 +879,7 @@ const SwTable* SwDoc::TextToTable( const SwInsertTableOptions& rInsTableOpts, GetIDocumentUndoRedo().EndUndo( UNDO_TEXTTOTABLE, nullptr ); } + getIDocumentState().SetEnableSetModified(bEnableSetModified); getIDocumentState().SetModified(); getIDocumentFieldsAccess().SetFieldsDirty(true, nullptr, 0); return &rNdTable; @@ -1106,7 +1113,6 @@ SwTableNode* SwNodes::TextToTable( const SwNodeRange& rRange, sal_Unicode cCh, lcl_BalanceTable(rTable, nMaxBoxes, *pTableNd, *pBoxFormat, *pTextColl, pUndo, &aPosArr); - rTable.RegisterToFormat(*pTableFormat); lcl_SetTableBoxWidths(rTable, nMaxBoxes, *pBoxFormat, *pDoc, &aPosArr); return pTableNd; @@ -1236,11 +1242,17 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> > } } + //Resolves: tdf#87977, tdf#78599, disable broadcasting modifications + //until after RegisterToFormat is completed + bool bEnableSetModified = getIDocumentState().IsEnableSetModified(); + getIDocumentState().SetEnableSetModified(false); + SwTableNode* pTableNd = GetNodes().TextToTable( rTableNodes, pTableFormat, pLineFormat, pBoxFormat, getIDocumentStylePoolAccess().GetTextCollFromPool( RES_POOLCOLL_STANDARD )/*, pUndo*/ ); SwTable& rNdTable = pTableNd->GetTable(); + rNdTable.RegisterToFormat(*pTableFormat); if( !pBoxFormat->HasWriterListeners() ) { @@ -1253,6 +1265,7 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> > sal_uLong nIdx = pTableNd->GetIndex(); aNode2Layout.RestoreUpperFrames( GetNodes(), nIdx, nIdx + 1 ); + getIDocumentState().SetEnableSetModified(bEnableSetModified); getIDocumentState().SetModified(); getIDocumentFieldsAccess().SetFieldsDirty( true, nullptr, 0 ); return &rNdTable; @@ -1430,7 +1443,6 @@ SwTableNode* SwNodes::TextToTable( const SwNodes::TableRanges_t & rTableNodes, nMaxBoxes = nBoxes; } - rTable.RegisterToFormat(*pTableFormat); lcl_SetTableBoxWidths2(rTable, nMaxBoxes, *pBoxFormat, *pDoc); return pTableNd; |