summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-01-31 18:05:05 -0500
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-01-31 18:06:07 -0500
commita995462e6855061816c6529c366f20ace2b45868 (patch)
tree69a6da23f5ee0ffc65251e9372b9cbf23a698366 /sc
parent28d5f8c69b2105dbc13af3993fcc5a4cfd4cc432 (diff)
Take advantage of segment-based hidden flag storage.
To avoid querying this states for every single column and row. Change-Id: I3e570ae5309c826e809c170ea4635dd37c9b0d43
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/data/table4.cxx11
1 files changed, 10 insertions, 1 deletions
diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx
index c0a300572b49..09f9c781bcd4 100644
--- a/sc/source/core/data/table4.cxx
+++ b/sc/source/core/data/table4.cxx
@@ -1270,10 +1270,19 @@ void ScTable::FillAutoSimple(
CellType eCellType = CELLTYPE_NONE;
bool bIsOrdinalSuffix = false;
+ bool bColHidden = false, bRowHidden = false;
+ SCCOL nColHiddenLast = -1;
+ SCROW nRowHiddenLast = -1;
+
rInner = nIStart;
while (true) // #i53728# with "for (;;)" old solaris/x86 compiler mis-optimizes
{
- if(!ColHidden(rCol) && !RowHidden(rRow))
+ if (rCol > nColHiddenLast)
+ bColHidden = ColHidden(rCol, NULL, &nColHiddenLast);
+ if (rRow > nRowHiddenLast)
+ bRowHidden = RowHidden(rRow, NULL, &nRowHiddenLast);
+
+ if (!bColHidden && !bRowHidden)
{
if ( bGetCell )
{