[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - sw/source

Caolán McNamara caolanm at redhat.com
Tue Dec 20 00:49:46 UTC 2016


 sw/source/core/docnode/ndtbl.cxx |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

New commits:
commit a4d4fbeb623013f6377b30711ceedb38ea4b49f8
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Dec 13 10:35:36 2016 +0000

    Resolves: tdf#103938 replace fix for tdf#78599/tdf#87977
    
    i.e. revert
    
    commit 162c72d64077d9e0dae820d881ce2b56a5b2040c
    Author: Caolán McNamara <caolanm at redhat.com>
    Date:   Fri Jan 23 13:17:39 2015 +0000
    
    and
    
    commit ad50b9a8636e0ee2f3c80669e8dde96577b26c4e
    Author: Caolán McNamara <caolanm at 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/31977
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>

diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 75ac47d..56a54575 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;
@@ -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;


More information about the Libreoffice-commits mailing list