summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-09-18 14:44:21 +0200
committerKohei Yoshida <kohei.yoshida@gmail.com>2012-09-18 12:00:00 -0400
commite12546da1a88ecef130a3a6842820bc7ebb2a851 (patch)
treeae258550e097db68b9c49e0bb15f845f65a324f2
parentff1739ea32ca98c9516e6d9bf7c131f9787a7220 (diff)
shrink to used area for duplicate codn format, fdo#54349
Change-Id: Ie0cce19c3ea2132d94a227cd051090573054b369 Signed-off-by: Kohei Yoshida <kohei.yoshida@gmail.com>
-rw-r--r--sc/source/core/data/conditio.cxx17
1 files changed, 15 insertions, 2 deletions
diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index aad60197dda5..7a345ed254b2 100644
--- a/sc/source/core/data/conditio.cxx
+++ b/sc/source/core/data/conditio.cxx
@@ -774,8 +774,21 @@ static bool lcl_IsDuplicate( ScDocument *pDoc, double nArg, const String& rStr,
const ScRange *aRange = rRanges[i];
SCROW nRow = aRange->aEnd.Row();
SCCOL nCol = aRange->aEnd.Col();
- for( SCROW r = aRange->aStart.Row(); r <= nRow; r++ )
- for( SCCOL c = aRange->aStart.Col(); c <= nCol; c++ )
+ SCCOL nColStart = aRange->aStart.Col();
+ SCROW nRowStart = aRange->aEnd.Row();
+ SCTAB nTab = aRange->aStart.Tab();
+
+ // temporary fix to workaorund slow duplicate entry
+ // conditions, prevent to use a whole row
+ if(nRow == MAXROW)
+ {
+ bool bShrunk = false;
+ pDoc->ShrinkToUsedDataArea(bShrunk, nTab, nColStart, nRowStart,
+ nCol, nRow, false);
+ }
+
+ for( SCROW r = nRowStart; r <= nRow; r++ )
+ for( SCCOL c = nColStart; c <= nCol; c++ )
{
double nVal = 0.0;
ScBaseCell *pCell = NULL;