summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2013-06-18 19:18:17 -0400
committerKohei Yoshida <kohei.yoshida@gmail.com>2013-06-24 16:51:28 -0400
commitcb4a47887df282196c9aa529269d5115306813c1 (patch)
tree4251446c49c3999fb1a546a3ea9b837462b82fd6 /sc
parent3b3b0c04385851f120dc26d26e40f0d1c6344274 (diff)
Leave the RowInfo's for empty cells unfilled.
Else empty cell regions would get skipped and the non-empty cells would get displayed at incorrect row positions. Change-Id: Ica8d1c654458e0ea508e8f00846180d89bfe8804
Diffstat (limited to 'sc')
-rw-r--r--sc/Module_sc.mk2
-rw-r--r--sc/inc/mtvcellfunc.hxx12
-rw-r--r--sc/inc/mtvelements.hxx2
-rw-r--r--sc/source/core/data/fillinfo.cxx8
4 files changed, 20 insertions, 4 deletions
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 0b3970f4991b..74888f0b54db 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -37,8 +37,6 @@ endif
$(eval $(call gb_Module_add_check_targets,sc,\
CppunitTest_sc_ucalc \
- CppunitTest_sc_filters_test \
- CppunitTest_sc_rangelst_test \
))
$(eval $(call gb_Module_add_slowcheck_targets,sc, \
diff --git a/sc/inc/mtvcellfunc.hxx b/sc/inc/mtvcellfunc.hxx
index 9ce3c12ea8cc..c54d02ebd339 100644
--- a/sc/inc/mtvcellfunc.hxx
+++ b/sc/inc/mtvcellfunc.hxx
@@ -112,6 +112,18 @@ ParseAllNonEmpty(
itPos, rCells, nRow1, nRow2, rFunc, aElse);
}
+template<typename _FuncElem, typename _FuncElse>
+typename CellStoreType::const_iterator
+ParseAllNonEmpty(
+ const typename CellStoreType::const_iterator& itPos, const CellStoreType& rCells,
+ SCROW nRow1, SCROW nRow2, _FuncElem& rFuncElem, _FuncElse& rFuncElse)
+{
+ return ParseElements4<CellStoreType,
+ numeric_block, string_block, edittext_block, formula_block,
+ _FuncElem, _FuncElse>(
+ itPos, rCells, nRow1, nRow2, rFuncElem, rFuncElse);
+}
+
template<typename _Func>
typename CellStoreType::const_iterator
ParseFormulaNumeric(
diff --git a/sc/inc/mtvelements.hxx b/sc/inc/mtvelements.hxx
index 0ebf8be9635f..2c589974e32d 100644
--- a/sc/inc/mtvelements.hxx
+++ b/sc/inc/mtvelements.hxx
@@ -15,7 +15,7 @@
#include "svl/broadcast.hxx"
#include "editeng/editobj.hxx"
-#define DEBUG_COLUMN_STORAGE 0
+#define DEBUG_COLUMN_STORAGE 1
#if DEBUG_COLUMN_STORAGE
#ifdef NDEBUG
diff --git a/sc/source/core/data/fillinfo.cxx b/sc/source/core/data/fillinfo.cxx
index c64a54d94c9e..7f73391f4a53 100644
--- a/sc/source/core/data/fillinfo.cxx
+++ b/sc/source/core/data/fillinfo.cxx
@@ -189,6 +189,12 @@ public:
if (!isHidden(nRow))
setInfo(ScRefCellValue(const_cast<ScFormulaCell*>(p)));
}
+
+ void operator() (mdds::mtv::element_t, size_t, size_t nDataSize)
+ {
+ // Skip all empty cells.
+ mrArrY += nDataSize;
+ }
};
}
@@ -430,7 +436,7 @@ void ScDocument::FillInfo( ScTableInfo& rTabInfo, SCCOL nX1, SCROW nY1, SCCOL nX
// cells that are not hidden.
RowInfoFiller aFunc(*this, nTab, pRowInfo, nArrX, nArrY);
sc::ParseAllNonEmpty(
- pThisCol->maCells.begin(), pThisCol->maCells, nY1, nY2, aFunc);
+ pThisCol->maCells.begin(), pThisCol->maCells, nY1, nY2, aFunc, aFunc);
if (nX+1 >= nX1) // Attribute/Blockmarken ab nX1-1
{