sc/source/core/data/column3.cxx | 14 ++++++++++---- sc/source/core/data/table3.cxx | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 5 deletions(-)
New commits: commit 97184f77739b833d4cb6a2ac54a76cb08b365848 Author: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> AuthorDate: Tue Aug 31 10:49:51 2021 +0200 Commit: Thorsten Behrens <thorsten.behr...@allotropia.de> CommitDate: Thu Sep 9 11:02:26 2021 +0200 tdf#142579 Consider cond. format background colors in color filter In addition to color scale, consider background colors set by a conditional style. Change-Id: I203c4a5ae87aa7b47c2caafcac703b0a0c1a677c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121474 Tested-by: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> (cherry picked from commit 88e81b3c5f7167d7dfc93617c3f9d9d6633ba0ad) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121721 Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de> diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 0040844f98ed..3f89d278a903 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -2417,9 +2417,12 @@ class FilterEntriesHandler // Colors ScAddress aPos(rColumn.GetCol(), nRow, rColumn.GetTab()); - // Text color + Color backgroundColor; + bool bHasConditionalBackgroundColor = false; + Color textColor; bool bHasConditionalTextColor = false; + // Check text & background color from cond. formatting const ScPatternAttr* pPattern = mrColumn.GetDoc()->GetPattern(aPos.Col(), aPos.Row(), aPos.Tab()); if (pPattern) @@ -2431,8 +2434,13 @@ class FilterEntriesHandler const SvxColorItem* pColor = &pPattern->GetItem(ATTR_FONT_COLOR, pCondSet); textColor = pColor->GetValue(); bHasConditionalTextColor = true; + + const SvxBrushItem* pBackgroundColor = &pPattern->GetItem(ATTR_BACKGROUND, pCondSet); + backgroundColor = pBackgroundColor->GetColor(); + bHasConditionalBackgroundColor = true; } } + if (!bHasConditionalTextColor) { const SvxColorItem* pColor = rColumn.GetDoc()->GetAttr(aPos, ATTR_FONT_COLOR); @@ -2440,9 +2448,7 @@ class FilterEntriesHandler } mrFilterEntries.addTextColor(textColor); - // Background color - Color backgroundColor; - bool bHasConditionalBackgroundColor = false; + // Color scale needs a different handling ScConditionalFormat* pCondFormat = rColumn.GetDoc()->GetCondFormat(aPos.Col(), aPos.Row(), aPos.Tab()); if (pCondFormat) diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index 1da0019e56fb..3372b8aac247 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -2726,9 +2726,23 @@ public: { ScAddress aPos(nCol, nRow, nTab); Color color; + // Background color can be set via conditional formatting - check that first - ScConditionalFormat* pCondFormat = mrDoc.GetCondFormat(nCol, nRow, nTab); bool bHasConditionalColor = false; + const ScPatternAttr* pPattern = mrDoc.GetPattern(nCol, nRow, nTab); + if (pPattern) + { + if (!pPattern->GetItem(ATTR_CONDITIONAL).GetCondFormatData().empty()) + { + const SfxItemSet* pCondSet + = mrDoc.GetCondResult(nCol, nRow, nTab); + const SvxBrushItem* pBackgroundColor = &pPattern->GetItem(ATTR_BACKGROUND, pCondSet); + color = pBackgroundColor->GetColor(); + bHasConditionalColor = true; + } + } + + ScConditionalFormat* pCondFormat = mrDoc.GetCondFormat(nCol, nRow, nTab); if (pCondFormat) { for (size_t i = 0; i < pCondFormat->size(); i++)