You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.9 KiB
53 lines
1.9 KiB
From fa08c98c485e0de34082f3d66c5e1b6609268be1 Mon Sep 17 00:00:00 2001
|
|
From: Kohei Yoshida <kohei.yoshida@collabora.com>
|
|
Date: Mon, 27 Oct 2014 08:52:38 -0700
|
|
Subject: [PATCH] fdo#85215: Ensure that formula broadcasting works after sort.
|
|
|
|
When the reference update on sort is turned off.
|
|
|
|
Change-Id: I547dd1525a638dd447fe331e22583af4a7947308
|
|
(cherry picked from commit 1eb82c78a223d9a0b2bb5c3f5c129c1ee8bdf303)
|
|
Reviewed-on: https://gerrit.libreoffice.org/12113
|
|
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
|
|
Tested-by: Michael Meeks <michael.meeks@collabora.com>
|
|
---
|
|
sc/source/core/data/table3.cxx | 15 +++++++++++++++
|
|
1 file changed, 15 insertions(+)
|
|
|
|
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
|
|
index 05285d8..f7589dd 100644
|
|
--- a/sc/source/core/data/table3.cxx
|
|
+++ b/sc/source/core/data/table3.cxx
|
|
@@ -803,6 +803,15 @@ void ScTable::SortReorderByRow(
|
|
ScSortInfoArray::RowsType* pRows = pArray->GetDataRows();
|
|
assert(pRows); // In sort-by-row mode we must have data rows already populated.
|
|
|
|
+ if (!pArray->IsUpdateRefs())
|
|
+ {
|
|
+ // When the update ref mode is disabled, we need to detach all formula
|
|
+ // cells in the sorted range before reordering, and re-start them
|
|
+ // afterward.
|
|
+ sc::EndListeningContext aCxt(*pDocument);
|
|
+ DetachFormulaCells(aCxt, nCol1, nRow1, nCol2, nRow2);
|
|
+ }
|
|
+
|
|
// Split formula groups at the sort range boundaries (if applicable).
|
|
std::vector<SCROW> aRowBounds;
|
|
aRowBounds.reserve(2);
|
|
@@ -1081,6 +1090,12 @@ void ScTable::SortReorderByRow(
|
|
// Re-group columns in the sorted range too.
|
|
for (SCCOL i = nCol1; i <= nCol2; ++i)
|
|
aCol[i].RegroupFormulaCells();
|
|
+
|
|
+ if (!pArray->IsUpdateRefs())
|
|
+ {
|
|
+ sc::StartListeningContext aCxt(*pDocument);
|
|
+ AttachFormulaCells(aCxt, nCol1, nRow1, nCol2, nRow2);
|
|
+ }
|
|
}
|
|
|
|
short ScTable::CompareCell(
|
|
--
|
|
1.9.3
|
|
|