Hi Eicke,

The second one:
0001-fdo42286-extend-down-but-also-shrink-if-cells-are-em.patch

For consistency it makes sense to also shrink the area, as
re-initializing the filter area with only one cell or one row selected
.....
erroneously included. Please go ahead with this one.

OK

Please check that a defined data base range did not change behavior with
your previous changes.
I have look at the code where GetDataArea is called. The only places where a behaviour change could happen are in function GetDBData ( sc/source/ui/docshell/docsh5.cxx ) if bOnlyDown is true. In this case, the area will be shrink - if needed - only for the number of rows. Before, all 4 sides (top, right, left and bottom) could be shrink. But this change exists only if we shrink. For expanding, the behaviour was already ensured as described (bOnlyDown = true would have expanded only down, not the other directions).

This now makes the behaviour symmetric between shrinking / expanding the area. Based on flags and description, the former behaviour was buggy, but maybe something has been build depending of it. Despite knowing what is changed, I was not able to produce a way of using it that seemed to be problematic. I see you have worked on this function, maybe something will strike you immediately :- ).

So here the patch. If no one object, I will push it during my Christmas Holiday.

Best regards
Pierre-André

>From 994b2c2e5a760503f8e466ae8068cf1cc453a712 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pierre-Andr=C3=A9=20Jacquod?= <pjacq...@alumni.ethz.ch>
Date: Thu, 15 Dec 2011 19:29:17 +0100
Subject: [PATCH 1/2] fdo42286 better solution: extend and shrink end of row if needed

---
 sc/source/core/tool/dbdata.cxx |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/sc/source/core/tool/dbdata.cxx b/sc/source/core/tool/dbdata.cxx
index 3d60554..3cc4146 100644
--- a/sc/source/core/tool/dbdata.cxx
+++ b/sc/source/core/tool/dbdata.cxx
@@ -544,10 +544,8 @@ void ScDBData::UpdateReference(ScDocument* pDoc, UpdateRefMode eUpdateRefMode,
 void ScDBData::ExtendDataArea(ScDocument* pDoc)
 {
     // Extend the DB area to include data rows immediately below.
-    SCCOL nCol1a = nStartCol, nCol2a = nEndCol;
-    SCROW nRow1a = nStartRow, nRow2a = nEndRow;
-    pDoc->GetDataArea(nTable, nCol1a, nRow1a, nCol2a, nRow2a, true, true);
-    nEndRow = nRow2a;
+    // or shrink it if all cells are empty
+    pDoc->GetDataArea(nTable, nStartCol, nStartRow, nEndCol, nEndRow, false, true);
 }
 
 namespace {
-- 
1.7.3.4

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to