chart2/source/controller/sidebar/ChartColorWrapper.cxx |    4 -
 chart2/source/controller/sidebar/ChartColorWrapper.hxx |    2 
 cui/qa/uitest/dialogs/chardlg.py                       |   66 +++++++++++++++++
 cui/source/tabpages/chardlg.cxx                        |   22 ++++-
 cui/source/tabpages/themepage.cxx                      |   14 +++
 include/svx/Palette.hxx                                |   20 ++++-
 include/svx/PaletteManager.hxx                         |    4 -
 include/svx/colorbox.hxx                               |   11 +-
 include/svx/tbcontrl.hxx                               |    2 
 reportdesign/source/ui/dlg/Condition.cxx               |    4 -
 reportdesign/source/ui/dlg/Condition.hxx               |    2 
 svx/source/tbxctrls/Palette.cxx                        |   13 +++
 svx/source/tbxctrls/PaletteManager.cxx                 |   36 +++++----
 svx/source/tbxctrls/tbcontrl.cxx                       |   33 ++++----
 14 files changed, 183 insertions(+), 50 deletions(-)

New commits:
commit 7d5984d7aed2bafcb599882b66bb0dde2d22ff3f
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Mon Dec 20 08:46:40 2021 +0100
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Mon Dec 20 11:31:53 2021 +0100

    sd theme: allow setting the color's theme index in the chardlg
    
    This routes not only the rgb color and a name, but also a theme index
    from the color picker to the chardlg (only there as a start).
    
    That way the picked color will be updated if the master page theme
    changes.
    
    Change-Id: I7a45d7cf63c7c36013e4656c66d9b2dbc3aa0b88
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127135
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    Tested-by: Jenkins

diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.cxx 
b/chart2/source/controller/sidebar/ChartColorWrapper.cxx
index 9340ed1c2028..08fbcdb1b6a9 100644
--- a/chart2/source/controller/sidebar/ChartColorWrapper.cxx
+++ b/chart2/source/controller/sidebar/ChartColorWrapper.cxx
@@ -85,7 +85,7 @@ ChartColorWrapper::ChartColorWrapper(
 {
 }
 
-void ChartColorWrapper::operator()([[maybe_unused]] const OUString& , const 
NamedColor& rColor)
+void ChartColorWrapper::operator()([[maybe_unused]] const OUString& , const 
svx::NamedThemedColor& rColor)
 {
     css::uno::Reference<css::beans::XPropertySet> xPropSet = 
getPropSet(mxModel);
 
@@ -95,7 +95,7 @@ void ChartColorWrapper::operator()([[maybe_unused]] const 
OUString& , const Name
         return;
     }
 
-    xPropSet->setPropertyValue(maPropertyName, 
css::uno::makeAny(rColor.first));
+    xPropSet->setPropertyValue(maPropertyName, 
css::uno::makeAny(rColor.m_aColor));
 }
 
 void ChartColorWrapper::updateModel(const 
css::uno::Reference<css::frame::XModel>& xModel)
diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.hxx 
b/chart2/source/controller/sidebar/ChartColorWrapper.hxx
index 66c880ae3ca2..694c5a9f7786 100644
--- a/chart2/source/controller/sidebar/ChartColorWrapper.hxx
+++ b/chart2/source/controller/sidebar/ChartColorWrapper.hxx
@@ -26,7 +26,7 @@ public:
             SvxColorToolBoxControl* pControl,
             const OUString& rPropertyName);
 
-    void operator()(const OUString& rCommand, const NamedColor& rColor);
+    void operator()(const OUString& rCommand, const svx::NamedThemedColor& 
rColor);
         // ColorSelectFunction signature
 
     void updateModel(const css::uno::Reference<css::frame::XModel>& xModel);
diff --git a/cui/qa/uitest/dialogs/chardlg.py b/cui/qa/uitest/dialogs/chardlg.py
index 49adfe6d9980..c49c08dbc687 100644
--- a/cui/qa/uitest/dialogs/chardlg.py
+++ b/cui/qa/uitest/dialogs/chardlg.py
@@ -8,6 +8,7 @@ from libreoffice.uno.propertyvalue import mkPropertyValues
 from uitest.framework import UITestCase
 from uitest.uihelper.common import select_pos
 from uitest.uihelper.common import get_state_as_dict
+from uitest.uihelper.common import select_by_text
 
 # Test for cui/source/tabpages/chardlg.cxx.
 class Test(UITestCase):
@@ -43,6 +44,71 @@ class Test(UITestCase):
             # COL_AUTO.
             self.assertEqual(shape.CharTransparence, 5)
 
+    def testSvxCharEffectsPageTheme(self):
+        # Given a document with a document theme:
+        # Start Impress.
+        with self.ui_test.create_doc_in_start_center("impress") as component:
+            template = self.xUITest.getTopFocusWindow()
+            
self.ui_test.close_dialog_through_button(template.getChild("close"))
+            doc = self.xUITest.getTopFocusWindow()
+            editWin = doc.getChild("impress_win")
+
+            # Set theme colors.
+            drawPage = component.getDrawPages().getByIndex(0)
+            master = drawPage.MasterPage
+            theme = mkPropertyValues({
+                "Name": "nameA",
+                "ColorSchemeName": "colorSetA",
+                "ColorScheme": tuple([
+                    0x000000,  # dk1
+                    0x000000,  # lt1
+                    0x000000,  # dk2
+                    0x000000,  # lt2
+                    0x000000,  # accent1
+                    0x000000,  # accent2
+                    0x000000,  # accent3
+                    0x000000,  # accent4
+                    0x000000,  # accent5
+                    0x000000,  # accent6
+                    0x000000,  # hlink
+                    0x000000,  # folHlink
+                ])
+            })
+            master.Theme = theme
+
+            # Select the title shape.
+            editWin.executeAction("TYPE", mkPropertyValues({"KEYCODE": "TAB"}))
+            editWin.executeAction("TYPE", mkPropertyValues({"TEXT": "t"}))
+            self.xUITest.executeCommand(".uno:SelectAll")
+
+            # Now use Format -> Character.
+            with 
self.ui_test.execute_dialog_through_command(".uno:FontDialog") as xDialog:
+                xTabs = xDialog.getChild("tabcontrol")
+                # Select RID_SVXPAGE_CHAR_EFFECTS.
+                select_pos(xTabs, "1")
+
+                # When setting the shape text color to accent 1:
+                accent1 = xDialog.getChild("fontcolorlb")
+                accent1.executeAction("OPENLIST", tuple())
+                floatWindow = self.xUITest.getFloatWindow()
+                paletteSelector = floatWindow.getChild("palette_listbox")
+                select_by_text(paletteSelector, "Theme colors")
+                colorSet = floatWindow.getChild("colorset")
+                colorSet.executeAction("CHOOSE", mkPropertyValues({"POS": 
"4"}))
+
+            # Then make sure the doc model has the correct color theme index:
+            drawPage = component.getDrawPages().getByIndex(0)
+            shape = drawPage.getByIndex(0)
+            paragraphs = shape.createEnumeration()
+            paragraph = paragraphs.nextElement()
+            portions = paragraph.createEnumeration()
+            portion = portions.nextElement()
+
+            # Without the accompanying fix in place, this test would have 
failed with:
+            # AssertionError: -1 != 4
+            # i.e. no theme index was set, instead of accent1 (index into the 
above color scheme).
+            self.assertEqual(portion.CharColorTheme, 4)
+
     def testSvxCharEffectsPageWriter(self):
         # Start Writer.
         with self.ui_test.create_doc_in_start_center("writer") as component:
diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx
index 90caf0ca36b8..b9337008d1d9 100644
--- a/cui/source/tabpages/chardlg.cxx
+++ b/cui/source/tabpages/chardlg.cxx
@@ -1573,28 +1573,38 @@ bool SvxCharEffectsPage::FillItemSetColor_Impl( 
SfxItemSet& rSet )
     sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_COLOR );
     const SfxItemSet& rOldSet = GetItemSet();
 
-    Color aSelectedColor;
+    svx::NamedThemedColor aSelectedColor;
     bool bChanged = m_bNewFontColor;
 
     if (bChanged)
     {
-        aSelectedColor = m_xFontColorLB->GetSelectEntryColor();
+        aSelectedColor = m_xFontColorLB->GetSelectedEntryThemedColor();
 
         if (m_xFontTransparencyMtr->get_value_changed_from_saved())
         {
             double fTransparency
                 = m_xFontTransparencyMtr->get_value(FieldUnit::PERCENT) * 
255.0 / 100;
-            aSelectedColor.SetAlpha(255 - 
static_cast<sal_uInt8>(basegfx::fround(fTransparency)));
+            aSelectedColor.m_aColor.SetAlpha(255 - 
static_cast<sal_uInt8>(basegfx::fround(fTransparency)));
         }
 
         if (m_bOrigFontColor)
-            bChanged = aSelectedColor != m_aOrigFontColor;
-        if (m_bEnableNoneFontColor && bChanged && aSelectedColor == 
COL_NONE_COLOR)
+            bChanged = aSelectedColor.m_aColor != m_aOrigFontColor;
+        if (m_bEnableNoneFontColor && bChanged && aSelectedColor.m_aColor == 
COL_NONE_COLOR)
             bChanged = false;
     }
 
     if (bChanged)
-        rSet.Put( SvxColorItem( aSelectedColor, nWhich ) );
+    {
+        SvxColorItem aItem( aSelectedColor.m_aColor, nWhich );
+
+        if (aSelectedColor.m_nThemeIndex != -1)
+        {
+            // The color was picked from the theme palette, remember its index.
+            aItem.SetThemeIndex(aSelectedColor.m_nThemeIndex);
+        }
+
+        rSet.Put(aItem);
+    }
     else if ( SfxItemState::DEFAULT == rOldSet.GetItemState( nWhich, false ) )
         rSet.InvalidateItem(nWhich);
 
diff --git a/cui/source/tabpages/themepage.cxx 
b/cui/source/tabpages/themepage.cxx
index c01d72def6cc..07d24649fb5d 100644
--- a/cui/source/tabpages/themepage.cxx
+++ b/cui/source/tabpages/themepage.cxx
@@ -73,7 +73,19 @@ void SvxThemePage::Reset(const SfxItemSet* pAttrs)
     auto itTheme = rGrabBagItem.GetGrabBag().find("Theme");
     if (itTheme == rGrabBagItem.GetGrabBag().end())
     {
-        SAL_WARN("cui.tabpages", "SvxThemePage::Reset: no Theme");
+        // No theme was defined previously, allow specifying colors.
+        m_xDk1->set_sensitive(true);
+        m_xLt1->set_sensitive(true);
+        m_xDk2->set_sensitive(true);
+        m_xLt2->set_sensitive(true);
+        m_xAccent1->set_sensitive(true);
+        m_xAccent2->set_sensitive(true);
+        m_xAccent3->set_sensitive(true);
+        m_xAccent4->set_sensitive(true);
+        m_xAccent5->set_sensitive(true);
+        m_xAccent6->set_sensitive(true);
+        m_xHlink->set_sensitive(true);
+        m_xFolHlink->set_sensitive(true);
         return;
     }
 
diff --git a/include/svx/Palette.hxx b/include/svx/Palette.hxx
index 0ccc644a8b01..fc9b7cb7ad33 100644
--- a/include/svx/Palette.hxx
+++ b/include/svx/Palette.hxx
@@ -24,13 +24,29 @@
 #include <functional>
 
 #include <rtl/ustring.hxx>
+#include <tools/color.hxx>
+#include <svx/svxdllapi.h>
 
-class Color;
 class SvxColorValueSet;
 
 typedef std::pair<Color, OUString> NamedColor;
 
-typedef std::function<void(const OUString&, const NamedColor&)> 
ColorSelectFunction;
+namespace svx
+{
+/// A color with an optional name and other theming-related properties.
+struct SVXCORE_DLLPUBLIC NamedThemedColor
+{
+    Color m_aColor;
+    OUString m_aName;
+    sal_Int16 m_nThemeIndex = -1;
+
+    static NamedThemedColor FromNamedColor(const NamedColor& rNamedColor);
+
+    NamedColor ToNamedColor() const;
+};
+}
+
+typedef std::function<void(const OUString&, const svx::NamedThemedColor&)> 
ColorSelectFunction;
 
 class Palette
 {
diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx
index 179c2fb4a924..cfe19e29994e 100644
--- a/include/svx/PaletteManager.hxx
+++ b/include/svx/PaletteManager.hxx
@@ -74,7 +74,9 @@ public:
 
     void        SetColorSelectFunction(const ColorSelectFunction& 
aColorSelectFunction);
 
-    static void DispatchColorCommand(const OUString& aCommand, const 
NamedColor& rColor);
+    bool IsThemePaletteSelected() const;
+
+    static void DispatchColorCommand(const OUString& aCommand, const 
svx::NamedThemedColor& rColor);
 };
 
 #endif // INCLUDED_SVX_PALETTEMANAGER_HXX
diff --git a/include/svx/colorbox.hxx b/include/svx/colorbox.hxx
index 23b92be6b38b..0dc858d1e67d 100644
--- a/include/svx/colorbox.hxx
+++ b/include/svx/colorbox.hxx
@@ -21,7 +21,7 @@ class ListBoxColorWrapper
 public:
     ListBoxColorWrapper(ColorListBox* pControl);
     void operator()(const OUString& rCommand,
-                    const NamedColor& rColor); // ColorSelectFunction signature
+                    const svx::NamedThemedColor& rColor); // 
ColorSelectFunction signature
 private:
     ColorListBox* mpControl;
 };
@@ -36,14 +36,14 @@ private:
     ListBoxColorWrapper m_aColorWrapper;
     Color m_aAutoDisplayColor;
     Color m_aSaveColor;
-    NamedColor m_aSelectedColor;
+    svx::NamedThemedColor m_aSelectedColor;
     sal_uInt16 m_nSlotId;
     bool m_bShowNoneButton;
     std::shared_ptr<PaletteManager> m_xPaletteManager;
     TopLevelParentFunction m_aTopLevelParentFunction;
     ColorStatus m_aColorStatus;
 
-    void Selected(const NamedColor& rNamedColor);
+    void Selected(const svx::NamedThemedColor& rNamedColor);
     void createColorWindow();
     void LockWidthRequest();
     ColorWindow* getColorWindow() const;
@@ -60,8 +60,9 @@ public:
 
     void SetSlotId(sal_uInt16 nSlotId, bool bShowNoneButton = false);
 
-    Color const& GetSelectEntryColor() const { return m_aSelectedColor.first; }
-    NamedColor const& GetSelectedEntry() const { return m_aSelectedColor; }
+    Color const& GetSelectEntryColor() const { return 
m_aSelectedColor.m_aColor; }
+    NamedColor GetSelectedEntry() const { return 
m_aSelectedColor.ToNamedColor(); }
+    svx::NamedThemedColor GetSelectedEntryThemedColor() const { return 
m_aSelectedColor; }
 
     void SelectEntry(const NamedColor& rColor);
     void SelectEntry(const Color& rColor);
diff --git a/include/svx/tbcontrl.hxx b/include/svx/tbcontrl.hxx
index 8347e3b9df1e..194db28a51f0 100644
--- a/include/svx/tbcontrl.hxx
+++ b/include/svx/tbcontrl.hxx
@@ -200,7 +200,7 @@ friend class SfxStyleControllerItem_Impl;
     SfxStyleFamily GetActFamily() const;
 };
 
-typedef std::function<void(const OUString&, const NamedColor&)> 
ColorSelectFunction;
+typedef std::function<void(const OUString&, const svx::NamedThemedColor&)> 
ColorSelectFunction;
 
 class SVXCORE_DLLPUBLIC SvxColorToolBoxControl final : public 
cppu::ImplInheritanceHelper< svt::PopupWindowController,
                                                                                
  css::frame::XSubToolbarController >
diff --git a/reportdesign/source/ui/dlg/Condition.cxx 
b/reportdesign/source/ui/dlg/Condition.cxx
index 030685c572a4..392b9d5e8af1 100644
--- a/reportdesign/source/ui/dlg/Condition.cxx
+++ b/reportdesign/source/ui/dlg/Condition.cxx
@@ -74,9 +74,9 @@ ConditionColorWrapper::ConditionColorWrapper(Condition* 
pControl, sal_uInt16 nSl
 }
 
 void ConditionColorWrapper::operator()(
-    [[maybe_unused]] const OUString& /*rCommand*/, const NamedColor& 
rNamedColor)
+    [[maybe_unused]] const OUString& /*rCommand*/, const 
svx::NamedThemedColor& rNamedColor)
 {
-    mpControl->ApplyCommand(mnSlotId, rNamedColor);
+    mpControl->ApplyCommand(mnSlotId, rNamedColor.ToNamedColor());
 }
 
 // = Condition
diff --git a/reportdesign/source/ui/dlg/Condition.hxx 
b/reportdesign/source/ui/dlg/Condition.hxx
index 02d26921bc62..2e25d343d1b9 100644
--- a/reportdesign/source/ui/dlg/Condition.hxx
+++ b/reportdesign/source/ui/dlg/Condition.hxx
@@ -58,7 +58,7 @@ namespace rptui
     {
     public:
         ConditionColorWrapper(Condition* pControl, sal_uInt16 nSlotId);
-        void operator()(const OUString& rCommand, const NamedColor& rColor);
+        void operator()(const OUString& rCommand, const svx::NamedThemedColor& 
rColor);
             // ColorSelectFunction signature
     private:
         Condition* mpControl;
diff --git a/svx/source/tbxctrls/Palette.cxx b/svx/source/tbxctrls/Palette.cxx
index b83b206cbe5a..fabccc8f2022 100644
--- a/svx/source/tbxctrls/Palette.cxx
+++ b/svx/source/tbxctrls/Palette.cxx
@@ -361,4 +361,17 @@ bool PaletteSOC::IsValid()
     return true;
 }
 
+namespace svx
+{
+NamedColor NamedThemedColor::ToNamedColor() const { return { m_aColor, m_aName 
}; }
+
+NamedThemedColor NamedThemedColor::FromNamedColor(const NamedColor& 
rNamedColor)
+{
+    NamedThemedColor aColor;
+    aColor.m_aColor = rNamedColor.first;
+    aColor.m_aName = rNamedColor.second;
+    return aColor;
+}
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/tbxctrls/PaletteManager.cxx 
b/svx/source/tbxctrls/PaletteManager.cxx
index 8b0a85deb101..4ed6d3059187 100644
--- a/svx/source/tbxctrls/PaletteManager.cxx
+++ b/svx/source/tbxctrls/PaletteManager.cxx
@@ -126,6 +126,11 @@ void PaletteManager::LoadPalettes()
     }
 }
 
+bool PaletteManager::IsThemePaletteSelected() const
+{
+    return mnCurrentPalette == mnNumOfPalettes - 2;
+}
+
 void PaletteManager::ReloadColorSet(SvxColorValueSet &rColorSet)
 {
     if( mnCurrentPalette == 0)
@@ -141,7 +146,7 @@ void PaletteManager::ReloadColorSet(SvxColorValueSet 
&rColorSet)
             ++nIx;
         }
     }
-    else if (mnCurrentPalette == mnNumOfPalettes - 2)
+    else if (IsThemePaletteSelected())
     {
         SfxObjectShell* pObjectShell = SfxObjectShell::Current();
         if (pObjectShell)
@@ -149,17 +154,20 @@ void PaletteManager::ReloadColorSet(SvxColorValueSet 
&rColorSet)
             std::vector<Color> aColors = pObjectShell->GetThemeColors();
             mnColorCount = aColors.size();
             rColorSet.Clear();
-            std::vector<OUString> aNames = {
-                SvxResId(RID_SVXSTR_THEME_COLOR1),  
SvxResId(RID_SVXSTR_THEME_COLOR2),
-                SvxResId(RID_SVXSTR_THEME_COLOR3),  
SvxResId(RID_SVXSTR_THEME_COLOR4),
-                SvxResId(RID_SVXSTR_THEME_COLOR5),  
SvxResId(RID_SVXSTR_THEME_COLOR6),
-                SvxResId(RID_SVXSTR_THEME_COLOR7),  
SvxResId(RID_SVXSTR_THEME_COLOR8),
-                SvxResId(RID_SVXSTR_THEME_COLOR9),  
SvxResId(RID_SVXSTR_THEME_COLOR10),
-                SvxResId(RID_SVXSTR_THEME_COLOR11), 
SvxResId(RID_SVXSTR_THEME_COLOR12),
-            };
-            for (int i = 0; i < 12; ++i)
+            if (aColors.size() >= 12)
             {
-                rColorSet.InsertItem(i, aColors[i], aNames[i]);
+                std::vector<OUString> aNames = {
+                    SvxResId(RID_SVXSTR_THEME_COLOR1),  
SvxResId(RID_SVXSTR_THEME_COLOR2),
+                    SvxResId(RID_SVXSTR_THEME_COLOR3),  
SvxResId(RID_SVXSTR_THEME_COLOR4),
+                    SvxResId(RID_SVXSTR_THEME_COLOR5),  
SvxResId(RID_SVXSTR_THEME_COLOR6),
+                    SvxResId(RID_SVXSTR_THEME_COLOR7),  
SvxResId(RID_SVXSTR_THEME_COLOR8),
+                    SvxResId(RID_SVXSTR_THEME_COLOR9),  
SvxResId(RID_SVXSTR_THEME_COLOR10),
+                    SvxResId(RID_SVXSTR_THEME_COLOR11), 
SvxResId(RID_SVXSTR_THEME_COLOR12),
+                };
+                for (int i = 0; i < 12; ++i)
+                {
+                    rColorSet.InsertItem(i, aColors[i], aNames[i]);
+                }
             }
         }
     }
@@ -340,12 +348,12 @@ void PaletteManager::PopupColorPicker(weld::Window* 
pParent, const OUString& aCo
             if (mpBtnUpdater)
                 mpBtnUpdater->Update(aNamedColor);
             AddRecentColor(aLastColor, sColorName);
-            maColorSelectFunction(aCommandCopy, aNamedColor);
+            maColorSelectFunction(aCommandCopy, 
svx::NamedThemedColor::FromNamedColor(aNamedColor));
         }
     });
 }
 
-void PaletteManager::DispatchColorCommand(const OUString& aCommand, const 
NamedColor& rColor)
+void PaletteManager::DispatchColorCommand(const OUString& aCommand, const 
svx::NamedThemedColor& rColor)
 {
     using namespace css::uno;
     using namespace css::frame;
@@ -362,7 +370,7 @@ void PaletteManager::DispatchColorCommand(const OUString& 
aCommand, const NamedC
     INetURLObject aObj( aCommand );
 
     Sequence<PropertyValue> aArgs{ 
comphelper::makePropertyValue(aObj.GetURLPath(),
-                                                                 
sal_Int32(rColor.first)) };
+                                                                 
sal_Int32(rColor.m_aColor)) };
 
     URL aTargetURL;
     aTargetURL.Complete = aCommand;
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 2946bea56c21..9fe859e96a48 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -1969,7 +1969,12 @@ IMPL_LINK(ColorWindow, SelectHdl, ValueSet*, pColorSet, 
void)
 
     maMenuButton.set_inactive();
 
-    aColorSelectFunction(sCommand, aNamedColor);
+    auto aNamedThemedColor = 
svx::NamedThemedColor::FromNamedColor(aNamedColor);
+    if (mxPaletteManager->IsThemePaletteSelected())
+    {
+        aNamedThemedColor.m_nThemeIndex = pColorSet->GetSelectedItemId();
+    }
+    aColorSelectFunction(sCommand, aNamedThemedColor);
 }
 
 IMPL_LINK_NOARG(ColorWindow, SelectPaletteHdl, weld::ComboBox&, void)
@@ -2002,7 +2007,7 @@ IMPL_LINK(ColorWindow, AutoColorClickHdl, weld::Button&, 
rButton, void)
 
     maMenuButton.set_inactive();
 
-    aColorSelectFunction(sCommand, aNamedColor);
+    aColorSelectFunction(sCommand, 
svx::NamedThemedColor::FromNamedColor(aNamedColor));
 }
 
 IMPL_LINK_NOARG(ColorWindow, OpenPickerClickHdl, weld::Button&, void)
@@ -3885,7 +3890,7 @@ ListBoxColorWrapper::ListBoxColorWrapper(ColorListBox* 
pControl)
 }
 
 void ListBoxColorWrapper::operator()(
-    [[maybe_unused]] const OUString& /*rCommand*/, const NamedColor& rColor)
+    [[maybe_unused]] const OUString& /*rCommand*/, const 
svx::NamedThemedColor& rColor)
 {
     mpControl->Selected(rColor);
 }
@@ -3905,8 +3910,8 @@ void ColorListBox::SetSlotId(sal_uInt16 nSlotId, bool 
bShowNoneButton)
     m_bShowNoneButton = bShowNoneButton;
     m_xButton->set_popover(nullptr);
     m_xColorWindow.reset();
-    m_aSelectedColor = bShowNoneButton ? GetNoneColor() : 
GetAutoColor(m_nSlotId);
-    ShowPreview(m_aSelectedColor);
+    m_aSelectedColor = svx::NamedThemedColor::FromNamedColor(bShowNoneButton ? 
GetNoneColor() : GetAutoColor(m_nSlotId));
+    ShowPreview(m_aSelectedColor.ToNamedColor());
     createColorWindow();
 }
 
@@ -3919,9 +3924,9 @@ 
ColorListBox::ColorListBox(std::unique_ptr<weld::MenuButton> pControl, TopLevelP
     , m_aTopLevelParentFunction(rTopLevelParentFunction)
 {
     m_xButton->connect_toggled(LINK(this, ColorListBox, ToggleHdl));
-    m_aSelectedColor = GetAutoColor(m_nSlotId);
+    m_aSelectedColor = 
svx::NamedThemedColor::FromNamedColor(GetAutoColor(m_nSlotId));
     LockWidthRequest();
-    ShowPreview(m_aSelectedColor);
+    ShowPreview(m_aSelectedColor.ToNamedColor());
 }
 
 IMPL_LINK(ColorListBox, ToggleHdl, weld::Toggleable&, rButton, void)
@@ -3967,7 +3972,7 @@ void ColorListBox::createColorWindow()
     m_xButton->set_popover(m_xColorWindow->getTopLevel());
     if (m_bShowNoneButton)
         m_xColorWindow->ShowNoneButton();
-    m_xColorWindow->SelectEntry(m_aSelectedColor);
+    m_xColorWindow->SelectEntry(m_aSelectedColor.ToNamedColor());
 }
 
 void ColorListBox::SelectEntry(const NamedColor& rColor)
@@ -3979,21 +3984,21 @@ void ColorListBox::SelectEntry(const NamedColor& rColor)
     }
     ColorWindow* pColorWindow = getColorWindow();
     pColorWindow->SelectEntry(rColor);
-    m_aSelectedColor = pColorWindow->GetSelectEntryColor();
-    ShowPreview(m_aSelectedColor);
+    m_aSelectedColor = 
svx::NamedThemedColor::FromNamedColor(pColorWindow->GetSelectEntryColor());
+    ShowPreview(m_aSelectedColor.ToNamedColor());
 }
 
 void ColorListBox::SelectEntry(const Color& rColor)
 {
     ColorWindow* pColorWindow = getColorWindow();
     pColorWindow->SelectEntry(rColor);
-    m_aSelectedColor = pColorWindow->GetSelectEntryColor();
-    ShowPreview(m_aSelectedColor);
+    m_aSelectedColor = 
svx::NamedThemedColor::FromNamedColor(pColorWindow->GetSelectEntryColor());
+    ShowPreview(m_aSelectedColor.ToNamedColor());
 }
 
-void ColorListBox::Selected(const NamedColor& rColor)
+void ColorListBox::Selected(const svx::NamedThemedColor& rColor)
 {
-    ShowPreview(rColor);
+    ShowPreview(rColor.ToNamedColor());
     m_aSelectedColor = rColor;
     if (m_aSelectedLink.IsSet())
         m_aSelectedLink.Call(*this);

Reply via email to