summaryrefslogtreecommitdiff
path: root/sc/source/core/tool
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-06-05 15:51:46 +0200
committerCaolán McNamara <caolanm@redhat.com>2015-06-09 10:34:33 +0000
commitd3a491fcc678bb4a490de79cb7474ef72cf6c35f (patch)
treeffe265e0ce2afef7b314885e6d938b0397ac554f /sc/source/core/tool
parent78468b1cd267e3020173b11007922a509d2941ba (diff)
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/16104 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc/source/core/tool')
-rw-r--r--sc/source/core/tool/sharedformula.cxx16
1 files changed, 14 insertions, 2 deletions
diff --git a/sc/source/core/tool/sharedformula.cxx b/sc/source/core/tool/sharedformula.cxx
index b1cd80d1fe7c..84025b91fc04 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.