summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-12-13 10:35:36 +0000
committerCaolán McNamara <caolanm@redhat.com>2016-12-13 20:56:39 +0000
commit7bc3175ad1fddf71c2a0108541e538f82872579a (patch)
tree7517758612e108f68557c39337af04eed280074c
parent871d610bc9b162ae68b263d857cf4168d124d180 (diff)
Resolves: tdf#103938 replace fix for tdf#78599/tdf#87977
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/31957 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--sw/source/core/docnode/ndtbl.cxx16
1 files changed, 14 insertions, 2 deletions
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index b0d05c36bfe4..53105ad2151f 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -720,6 +720,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 );
@@ -745,6 +750,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) )
{
@@ -874,6 +880,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;
@@ -1107,7 +1114,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;
@@ -1237,11 +1243,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() )
{
@@ -1254,6 +1266,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;
@@ -1431,7 +1444,6 @@ SwTableNode* SwNodes::TextToTable( const SwNodes::TableRanges_t & rTableNodes,
nMaxBoxes = nBoxes;
}
- rTable.RegisterToFormat(*pTableFormat);
lcl_SetTableBoxWidths2(rTable, nMaxBoxes, *pBoxFormat, *pDoc);
return pTableNd;