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

Eike Rathke erack at redhat.com
Wed Jun 10 09:59:18 PDT 2015


 sc/source/core/tool/sharedformula.cxx |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

New commits:
commit ce73f4befb90dbcc80964cec656127a6210b4d18
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Jun 5 15:51:46 2015 +0200

    tdf#90694 reset group area listeners when splitting group
    
    (cherry picked from commit 2f6a06856ad8df0c11a112d1e457b408e9a7af1d)
    
    tdf#90694 reset group area listeners on correct top
    
    Follow-up on 2f6a06856ad8df0c11a112d1e457b408e9a7af1d, rTop is top of
    created group, listening needs to be ended on original (previous) group.
    
    (cherry picked from commit 5d6448a5131488eac3a6af16bff06140663c3db4)
    
    1f975a0a6c85e649aa07ce5c6e97bc6e917ff9ce
    
    Change-Id: Ib3e85e1f7e12447fc2998711663ea1e9d1b322e5
    Reviewed-on: https://gerrit.libreoffice.org/16105
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
    Tested-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>

diff --git a/sc/source/core/tool/sharedformula.cxx b/sc/source/core/tool/sharedformula.cxx
index b1cd80d..84025b9 100644
--- a/sc/source/core/tool/sharedformula.cxx
+++ b/sc/source/core/tool/sharedformula.cxx
@@ -55,12 +55,24 @@ void SharedFormulaUtil::splitFormulaCellGroup(const CellStoreType::position_type
     }
 
     xGroup->mnLength = nRow - xGroup->mpTopCell->aPos.Row();
+    ScFormulaCell& rPrevTop = *sc::formula_block::at(*aPos.first->data, aPos.second - xGroup->mnLength);
+
+#if USE_FORMULA_GROUP_LISTENER
+    // At least group area listeners will have to be adapted. As long as
+    // there's no update mechanism and no separated handling of group area and
+    // other listeners, all listeners of this group's top cell are to be reset.
+    if (nLength2)
+    {
+        rPrevTop.EndListeningTo( rPrevTop.GetDocument(), NULL, ScAddress( ScAddress::UNINITIALIZED));
+        rPrevTop.SetNeedsListening(true);
+    }
+#endif
+
     if (xGroup->mnLength == 1)
     {
         // The top group consists of only one cell. Ungroup this.
         ScFormulaCellGroupRef xNone;
-        ScFormulaCell& rPrev = *sc::formula_block::at(*aPos.first->data, aPos.second-1);
-        rPrev.SetCellGroup(xNone);
+        rPrevTop.SetCellGroup(xNone);
     }
 
     // Apply the lower group object to the lower cells.


More information about the Libreoffice-commits mailing list