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

Eike Rathke erack at redhat.com
Thu Mar 24 13:05:22 UTC 2016


 sc/source/core/data/document.cxx |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

New commits:
commit 1bfc042ea7af6f7b3b0410cb03cef41a358582d4
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Feb 29 17:54:50 2016 +0100

    fix the "group not recalculated after delete" second part of tdf#97897
    
    If a formula cell group was split during deletion and the group also
    listened into the range where a cell was deleted, the group wasn't
    notified of the deletion.
    
    Change-Id: I858f5d4c0b647636611133fc32f3df7fbdaf7288
    (cherry picked from commit 164419bfe6270015ccf94183c0b6273da7730391)
    Reviewed-on: https://gerrit.libreoffice.org/22784
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index bb6431a..78b354a 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -1818,6 +1818,24 @@ void ScDocument::DeleteArea(
         // Re-start listeners on those top bottom groups that have been split.
         SetNeedsListeningGroups(aGroupPos);
         StartNeededListeners();
+
+        // If formula groups were split their listeners were destroyed and may
+        // need to be notified now that they're restored, ScTable::DeleteArea()
+        // couldn't do that.
+        if (!aGroupPos.empty())
+        {
+            ScRange aRange(nCol1, nRow1, 0, nCol2, nRow2, 0);
+            for (SCTAB i = 0; i < static_cast<SCTAB>(maTabs.size()); i++)
+            {
+                if (rMark.GetTableSelect(i))
+                {
+                    aRange.aStart.SetTab(i);
+                    aRange.aEnd.SetTab(i);
+
+                    SetDirty( aRange, true);
+                }
+            }
+        }
     }
 }
 


More information about the Libreoffice-commits mailing list