FilteredRow is not a property of the column, tdf#117276 follow-up
It's only needed in the FilterEntriesHandler, so pass it there.
Change-Id: I5554ad13a43ccce6aafbba82b33418f060173a43
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137512
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index a67a166..ba964cd 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -204,7 +204,6 @@ class ScColumn : protected ScColumnData
SCTAB nTab;
bool mbFiltering : 1; // it is true if there is a filtering in the column
bool mbFilteredRow : 1; // it is true if the actual row of the filtered column is hidden
bool mbEmptyBroadcastersPending : 1; // a broadcaster not removed during EnableDelayDeletingBroadcasters()
friend class ScDocument; // for FillInfo
@@ -256,7 +255,6 @@ public:
SCTAB GetTab() const { return nTab; }
SCCOL GetCol() const { return nCol; }
bool HasFiltering() const { return mbFiltering; }
bool IsFilteredRow() const { return mbFilteredRow; }
sc::CellStoreType& GetCellStore() { return maCells; }
const sc::CellStoreType& GetCellStore() const { return maCells; }
sc::CellTextAttrStoreType& GetCellAttrStore() { return maCellTextAttrs; }
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 1d255233..ceb06b1 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -2488,6 +2488,7 @@ class FilterEntriesHandler
{
ScColumn& mrColumn;
ScFilterEntries& mrFilterEntries;
bool mbFilteredRow;
void processCell(const ScColumn& rColumn, SCROW nRow, ScRefCellValue& rCell)
{
@@ -2559,7 +2560,7 @@ class FilterEntriesHandler
if (rCell.hasString())
{
mrFilterEntries.push_back(ScTypedStrData(std::move(aStr), 0.0, 0.0, ScTypedStrData::Standard, false, mrColumn.IsFilteredRow()));
mrFilterEntries.push_back(ScTypedStrData(std::move(aStr), 0.0, 0.0, ScTypedStrData::Standard, false, mbFilteredRow));
return;
}
@@ -2617,14 +2618,14 @@ class FilterEntriesHandler
}
// store the formatted/rounded value for filtering
if ((nFormat % SV_COUNTRY_LANGUAGE_OFFSET) != 0 && !bDate)
mrFilterEntries.push_back(ScTypedStrData(std::move(aStr), fVal, rColumn.GetDoc().RoundValueAsShown(fVal, nFormat), ScTypedStrData::Value, bDate, mrColumn.IsFilteredRow()));
mrFilterEntries.push_back(ScTypedStrData(std::move(aStr), fVal, rColumn.GetDoc().RoundValueAsShown(fVal, nFormat), ScTypedStrData::Value, bDate, mbFilteredRow));
else
mrFilterEntries.push_back(ScTypedStrData(std::move(aStr), fVal, fVal, ScTypedStrData::Value, bDate, mrColumn.IsFilteredRow()));
mrFilterEntries.push_back(ScTypedStrData(std::move(aStr), fVal, fVal, ScTypedStrData::Value, bDate, mbFilteredRow));
}
public:
FilterEntriesHandler(ScColumn& rColumn, ScFilterEntries& rFilterEntries) :
mrColumn(rColumn), mrFilterEntries(rFilterEntries) {}
FilterEntriesHandler(ScColumn& rColumn, ScFilterEntries& rFilterEntries, bool bFilteredRow) :
mrColumn(rColumn), mrFilterEntries(rFilterEntries), mbFilteredRow(bFilteredRow) {}
void operator() (size_t nRow, double fVal)
{
@@ -2673,8 +2674,7 @@ void ScColumn::GetFilterEntries(
ScFilterEntries& rFilterEntries, bool bFiltering, bool bFilteredRow )
{
mbFiltering = bFiltering;
mbFilteredRow = bFilteredRow;
FilterEntriesHandler aFunc(*this, rFilterEntries);
FilterEntriesHandler aFunc(*this, rFilterEntries, bFilteredRow);
rBlockPos.miCellPos =
sc::ParseAll(rBlockPos.miCellPos, maCells, nStartRow, nEndRow, aFunc, aFunc);
}