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
 

Reply via email to