[Libreoffice-commits] core.git: Branch 'libreoffice-5-4' - sc/source

Eike Rathke erack at redhat.com
Fri Sep 15 19:51:09 UTC 2017


 sc/source/core/data/documen7.cxx |    3 ++-
 sc/source/core/data/table5.cxx   |   15 ++++++++++++---
 2 files changed, 14 insertions(+), 4 deletions(-)

New commits:
commit de4a0f769501b0b79b05e007ae340af344017dd0
Author: Eike Rathke <erack at redhat.com>
Date:   Thu Aug 24 19:33:32 2017 +0200

    Resolves: tdf#93171 follow-up, notify dependents of subtotal formula cells
    
    Track ScHiddenRowsChanged collected cells and broadcast with ScDataChanged.
    
    Change-Id: Id41d2731585f6749533319bf42ad655a845ecf30
    (cherry picked from commit c84332184a5de3e4180514cf6e3282597ffe5dd6)
    Reviewed-on: https://gerrit.libreoffice.org/41530
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>

diff --git a/sc/source/core/data/documen7.cxx b/sc/source/core/data/documen7.cxx
index 8ab7e6014266..913b9cf0c055 100644
--- a/sc/source/core/data/documen7.cxx
+++ b/sc/source/core/data/documen7.cxx
@@ -559,7 +559,8 @@ void ScDocument::TrackFormulas( SfxHintId nHintId )
     if (!pBASM)
         return;
 
-    if (pBASM->IsInBulkBroadcast() && !IsFinalTrackFormulas() && nHintId == SfxHintId::ScDataChanged)
+    if (pBASM->IsInBulkBroadcast() && !IsFinalTrackFormulas() &&
+            (nHintId == SfxHintId::ScDataChanged || nHintId == SfxHintId::ScHiddenRowsChanged))
     {
         SetTrackFormulasPending();
         return;
diff --git a/sc/source/core/data/table5.cxx b/sc/source/core/data/table5.cxx
index 81ad0057e68b..d65632536262 100644
--- a/sc/source/core/data/table5.cxx
+++ b/sc/source/core/data/table5.cxx
@@ -40,6 +40,7 @@
 #include "globalnames.hxx"
 #include "scmod.hxx"
 #include "printopt.hxx"
+#include "bcaslot.hxx"
 
 #include <com/sun/star/sheet/TablePageBreakData.hpp>
 
@@ -593,9 +594,17 @@ bool ScTable::SetRowHidden(SCROW nStartRow, SCROW nEndRow, bool bHidden)
     {
         if (IsStreamValid())
             SetStreamValid(false);
-        for (SCCOL i = 0; i < aCol.size(); i++)
-        {
-            aCol[i].BroadcastRows(nStartRow, nEndRow, SfxHintId::ScHiddenRowsChanged);
+
+        {   // Scoped bulk broadcast.
+            // Only subtotal formula cells will accept the notification of
+            // SfxHintId::ScHiddenRowsChanged, leaving the bulk will track
+            // those and broadcast SfxHintId::ScDataChanged to notify all
+            // dependents.
+            ScBulkBroadcast aBulkBroadcast( pDocument->GetBASM(), SfxHintId::ScDataChanged);
+            for (SCCOL i = 0; i < aCol.size(); i++)
+            {
+                aCol[i].BroadcastRows(nStartRow, nEndRow, SfxHintId::ScHiddenRowsChanged);
+            }
         }
     }
 


More information about the Libreoffice-commits mailing list