sc/source/ui/theme/ThemeColorChanger.cxx | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+)
New commits: commit 50e0a91c6907bab1a82e66bbc24e55621e673088 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Fri Jun 23 13:49:24 2023 +0900 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Thu Aug 24 16:42:27 2023 +0200 sc: ThemeColorChanger - change theme color for borders Change-Id: Id6b08ad48b496d2f1138aeea8d024a5f61bee633 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153500 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> (cherry picked from commit 95d199e3d1a04a469e1d22896ffd967c7a06c3f0) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156027 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/sc/source/ui/theme/ThemeColorChanger.cxx b/sc/source/ui/theme/ThemeColorChanger.cxx index 2211aa67b554..a245f7b0c1c0 100644 --- a/sc/source/ui/theme/ThemeColorChanger.cxx +++ b/sc/source/ui/theme/ThemeColorChanger.cxx @@ -16,6 +16,8 @@ #include <docmodel/theme/Theme.hxx> #include <editeng/colritem.hxx> #include <editeng/brushitem.hxx> +#include <editeng/boxitem.hxx> +#include <editeng/borderline.hxx> #include <stlpool.hxx> #include <stlsheet.hxx> @@ -35,6 +37,26 @@ ThemeColorChanger::~ThemeColorChanger() = default; namespace { +bool changeBorderLine(editeng::SvxBorderLine* pBorderLine, model::ColorSet const& rColorSet) +{ + if (!pBorderLine) + return false; + + model::ComplexColor const& rComplexColor = pBorderLine->getComplexColor(); + if (rComplexColor.meType == model::ColorType::Scheme) + { + auto eThemeType = rComplexColor.meSchemeType; + + if (eThemeType != model::ThemeColorType::Unknown) + { + Color aColor = rColorSet.resolveColor(rComplexColor); + pBorderLine->SetColor(aColor); + return true; + } + } + return false; +} + void changeCellItems(SfxItemSet& rItemSet, model::ColorSet const& rColorSet) { const SfxPoolItem* pItem = nullptr; @@ -75,6 +97,20 @@ void changeCellItems(SfxItemSet& rItemSet, model::ColorSet const& rColorSet) } } } + if (rItemSet.HasItem(ATTR_BORDER, &pItem)) + { + auto const* pBoxItem = static_cast<const SvxBoxItem*>(pItem); + SvxBoxItem rNewItem(*pBoxItem); + bool bChanged = false; + + bChanged = changeBorderLine(rNewItem.GetBottom(), rColorSet) || bChanged; + bChanged = changeBorderLine(rNewItem.GetTop(), rColorSet) || bChanged; + bChanged = changeBorderLine(rNewItem.GetLeft(), rColorSet) || bChanged; + bChanged = changeBorderLine(rNewItem.GetRight(), rColorSet) || bChanged; + + if (bChanged) + rItemSet.Put(rNewItem); + } } } // end anonymous ns