diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-01-31 18:05:05 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-01-31 18:06:07 -0500 |
commit | a995462e6855061816c6529c366f20ace2b45868 (patch) | |
tree | 69a6da23f5ee0ffc65251e9372b9cbf23a698366 /sc | |
parent | 28d5f8c69b2105dbc13af3993fcc5a4cfd4cc432 (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.cxx | 11 |
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 ) { |