cui/inc/strings.hrc                                  |    2 
 cui/source/options/appearance.cxx                    |  154 -
 cui/source/options/appearance.hxx                    |    8 
 cui/uiconfig/ui/appearance.ui                        |  105 -
 include/svtools/colorcfg.hxx                         |    2 
 include/vcl/themecolors.hxx                          |   16 
 officecfg/registry/data/org/openoffice/Office/UI.xcu | 1546 +++++++++++++++++++
 svtools/source/config/colorcfg.cxx                   |    4 
 8 files changed, 1627 insertions(+), 210 deletions(-)

New commits:
commit ba8c5158893c8dcd793ccf597dcea4d0a08f2c73
Author:     Sahil Gautam <[email protected]>
AuthorDate: Tue Apr 22 14:00:00 2025 +0530
Commit:     Sahil Gautam <[email protected]>
CommitDate: Mon Jan 26 09:57:53 2026 +0100

    tdf#164970 Merge appearance options with themes dropdown
    
    TL;DR
    Now there is only one entity "THEME" the user has to care about when
    using the appearance tab page. We ship three default themes which
    just change the document colors. Custom themes can customize the UI
    too.
    
    We used to have two sections in the appearance tab, the themes dropdown
    and the appearance radio buttons group (automatic, light and dark), and
    this was really confusing.
    
    Let's say I am a new user, and I go to the appearance tag page I select
    the dark radio button, why isn't my application changing to dark mode?
    same for light... and then the distinction between application colors
    and document colors, the radio buttons were mainly for the docuemnt
    appearance, and the themes dropdown was for changing the current theme
    which might change the document colors as well.
    
    Now the radio buttons have been merged with the themes dropdown. Now
    there are three default themes there, "Automatic", "Light" and "Dark".
    These three themes don't define any UI colors and just change the
    document colors. If the user installs a new theme, and if that theme
    defines UI colors, the UI will also be customized.
    
    Change-Id: If8da6d2f729f117ada07e13b607ed8525395cb6c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184429
    Reviewed-by: Sahil Gautam <[email protected]>
    Tested-by: Jenkins
    (cherry picked from commit b145d0925a68863aae03c123d827de19dc784428)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198093
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Sahil Gautam <[email protected]>

diff --git a/cui/inc/strings.hrc b/cui/inc/strings.hrc
index c38ef4c5e619..08c42ccfded6 100644
--- a/cui/inc/strings.hrc
+++ b/cui/inc/strings.hrc
@@ -400,6 +400,8 @@
 
 // Translatable names of color schemes
 #define RID_COLOR_SCHEME_LIBREOFFICE_AUTOMATIC      
NC_("RID_COLOR_SCHEME_LIBREOFFICE_AUTOMATIC", "Automatic")
+#define RID_COLOR_SCHEME_LIBREOFFICE_LIGHT          
NC_("RID_COLOR_SCHEME_LIBREOFFICE_LIGHT", "Light")
+#define RID_COLOR_SCHEME_LIBREOFFICE_DARK           
NC_("RID_COLOR_SCHEME_LIBREOFFICE_DARK", "Dark")
 
 // Translatable Bitmap Names
 #define BMP_FUZZY_LIGHTGREY                         NC_("BMP_FUZZY_LIGHTGREY", 
"Fuzzy Lightgrey")
diff --git a/cui/source/options/appearance.cxx 
b/cui/source/options/appearance.cxx
index d7c3c0d167fc..108f062ee824 100644
--- a/cui/source/options/appearance.cxx
+++ b/cui/source/options/appearance.cxx
@@ -87,6 +87,13 @@ std::vector<BitmapData> const& getBitmapList()
 }
 }
 
+static bool IsDarkModeEnabled()
+{
+    return MiscSettings::GetAppColorMode() == AppearanceMode::DARK
+           || (MiscSettings::GetAppColorMode() == AppearanceMode::AUTO
+               && MiscSettings::GetUseDarkMode());
+}
+
 SvxAppearanceTabPage::SvxAppearanceTabPage(weld::Container* pPage,
                                            weld::DialogController* pController,
                                            const SfxItemSet& rSet)
@@ -97,9 +104,6 @@ SvxAppearanceTabPage::SvxAppearanceTabPage(weld::Container* 
pPage,
     , m_xMoreThemesBtn(m_xBuilder->weld_button(u"morethemesbtn"_ustr))
     , m_xAddSchemeBtn(m_xBuilder->weld_button(u"newschemebtn"_ustr))
     , m_xRemoveSchemeBtn(m_xBuilder->weld_button(u"removeschemebtn"_ustr))
-    , m_xAppearanceSystem(m_xBuilder->weld_radio_button(u"system"_ustr))
-    , m_xAppearanceLight(m_xBuilder->weld_radio_button(u"light"_ustr))
-    , m_xAppearanceDark(m_xBuilder->weld_radio_button(u"dark"_ustr))
     , m_xColorEntryBtn(m_xBuilder->weld_combo_box(u"registrydropdown"_ustr))
     , m_xColorChangeBtn((new 
ColorListBox(m_xBuilder->weld_menu_button(u"colorsdropdownbtn"_ustr),
                                           [this] { return GetFrameWeld(); })))
@@ -112,7 +116,6 @@ SvxAppearanceTabPage::SvxAppearanceTabPage(weld::Container* 
pPage,
     , m_xBitmapDropDownBtn(m_xBuilder->weld_combo_box(u"bitmapdropdown"_ustr))
 {
     InitThemes();
-    InitAppearance();
     InitCustomization();
 }
 
@@ -120,16 +123,29 @@ void SvxAppearanceTabPage::LoadSchemeList()
 {
     m_xSchemeList->clear();
     css::uno::Sequence<OUString> aSchemeNames = pColorConfig->GetSchemeNames();
-    for (size_t i = 0; i < aSchemeNames.size(); ++i)
-    {
-        if (aSchemeNames[i] != AUTOMATIC_COLOR_SCHEME)
-            m_xSchemeList->insert(i, aSchemeNames[i], nullptr, nullptr, 
nullptr);
-    }
+
+    // insert auto, light, dark themes first
     m_xSchemeList->insert(0, CuiResId(RID_COLOR_SCHEME_LIBREOFFICE_AUTOMATIC),
                           &AUTOMATIC_COLOR_SCHEME, nullptr, nullptr);
+    m_xSchemeList->insert(1, CuiResId(RID_COLOR_SCHEME_LIBREOFFICE_LIGHT), 
&LIGHT_COLOR_SCHEME,
+                          nullptr, nullptr);
+    m_xSchemeList->insert(2, CuiResId(RID_COLOR_SCHEME_LIBREOFFICE_DARK), 
&DARK_COLOR_SCHEME,
+                          nullptr, nullptr);
 
-    if (pColorConfig->GetCurrentSchemeName() == AUTOMATIC_COLOR_SCHEME)
+    // insert all the custom color schemes
+    for (size_t i = 0; i < aSchemeNames.size(); ++i)
+        if (ThemeColors::IsCustomTheme(aSchemeNames[i]))
+            m_xSchemeList->append_text(aSchemeNames[i]);
+
+    // since this function just loads entries into the list, we don't call
+    // MiscSettings::SetAppColorMode(...) here, and instead do so in the
+    // SchemeChangeHdl callback.
+    if (ThemeColors::IsAutomaticTheme(pColorConfig->GetCurrentSchemeName()))
         m_xSchemeList->set_active_id(AUTOMATIC_COLOR_SCHEME);
+    else if (ThemeColors::IsLightTheme(pColorConfig->GetCurrentSchemeName()))
+        m_xSchemeList->set_active_id(LIGHT_COLOR_SCHEME);
+    else if (ThemeColors::IsDarkTheme(pColorConfig->GetCurrentSchemeName()))
+        m_xSchemeList->set_active_id(DARK_COLOR_SCHEME);
     else
         m_xSchemeList->set_active_text(pColorConfig->GetCurrentSchemeName());
 }
@@ -165,15 +181,6 @@ OUString SvxAppearanceTabPage::GetAllStrings()
 
 bool SvxAppearanceTabPage::FillItemSet(SfxItemSet* /* rSet */)
 {
-    // commit appearance value if changed
-    if (eCurrentAppearanceMode != MiscSettings::GetAppColorMode())
-    {
-        MiscSettings::SetAppColorMode(eCurrentAppearanceMode);
-        // if themes disabled then change the document colors as per the new 
appearance mode.
-        if (ThemeColors::IsThemeDisabled())
-            UpdateDocumentAppearance();
-    }
-
     // commit ColorConfig
     if (pColorConfig->IsModified())
         pColorConfig->Commit();
@@ -192,9 +199,6 @@ void SvxAppearanceTabPage::Reset(const SfxItemSet* /* rSet 
*/)
 
     UpdateRemoveBtnState();
 
-    // reset appearance
-    eCurrentAppearanceMode = MiscSettings::GetAppColorMode();
-
     // reset ColorConfig
     if (pColorConfig)
     {
@@ -216,25 +220,6 @@ IMPL_LINK_NOARG(SvxAppearanceTabPage, ShowInDocumentHdl, 
weld::Toggleable&, void
     pColorConfig->SetColorValue(static_cast<ColorConfigEntry>(nEntry), 
aCurrentEntryColor);
 }
 
-IMPL_LINK_NOARG(SvxAppearanceTabPage, AppearanceChangeHdl, weld::Toggleable&, 
void)
-{
-    if (m_xAppearanceSystem->get_state() == TRISTATE_TRUE)
-        eCurrentAppearanceMode = AppearanceMode::AUTO;
-    if (m_xAppearanceLight->get_state() == TRISTATE_TRUE)
-        eCurrentAppearanceMode = AppearanceMode::LIGHT;
-    if (m_xAppearanceDark->get_state() == TRISTATE_TRUE)
-        eCurrentAppearanceMode = AppearanceMode::DARK;
-    // set the extension theme on light/dark
-
-    // restart iff appearance was toggled and theme was enabled
-    m_bRestartRequired = false;
-    if (eCurrentAppearanceMode != MiscSettings::GetAppColorMode()
-        && !ThemeColors::IsThemeDisabled())
-        m_bRestartRequired = true;
-
-    UpdateColorDropdown();
-}
-
 IMPL_LINK_NOARG(SvxAppearanceTabPage, ColorEntryChgHdl, weld::ComboBox&, void)
 {
     // get selected entry index and ColorConfigValue
@@ -314,14 +299,42 @@ IMPL_LINK_NOARG(SvxAppearanceTabPage, ColorValueChgHdl, 
ColorListBox&, void)
 
 IMPL_LINK_NOARG(SvxAppearanceTabPage, SchemeChangeHdl, weld::ComboBox&, void)
 {
-    if (m_xSchemeList->get_active_id() == AUTOMATIC_COLOR_SCHEME)
-        pColorConfig->LoadScheme(AUTOMATIC_COLOR_SCHEME);
+    AppearanceMode eMode;
+    OUString sNewScheme;
+
+    if (ThemeColors::IsAutomaticTheme(m_xSchemeList->get_active_id()))
+    {
+        sNewScheme = AUTOMATIC_COLOR_SCHEME;
+        eMode = AppearanceMode::AUTO;
+    }
+    else if (ThemeColors::IsLightTheme(m_xSchemeList->get_active_id()))
+    {
+        sNewScheme = LIGHT_COLOR_SCHEME;
+        eMode = AppearanceMode::LIGHT;
+    }
+    else if (ThemeColors::IsDarkTheme(m_xSchemeList->get_active_id()))
+    {
+        sNewScheme = DARK_COLOR_SCHEME;
+        eMode = AppearanceMode::DARK;
+    }
     else
-        pColorConfig->LoadScheme(m_xSchemeList->get_active_text());
+    {
+        sNewScheme = m_xSchemeList->get_active_text();
+        // for custom theme, keep appearance to AUTO, doesn't matter for the 
most part,
+        // but if some colors like document colors are not specified, then 
they will be
+        // set as per the OS appearance mode
+        eMode = AppearanceMode::AUTO;
+    }
+
+    // NOTE: LoadScheme must be called after updating the AppearanceMode as 
LoadScheme calls Lode
+    // which loads colors based on the current application appearance.
+    MiscSettings::SetAppColorMode(eMode);
+    pColorConfig->LoadScheme(sNewScheme);
 
     if (m_xSchemeList->get_value_changed_from_saved() && 
!ThemeColors::IsThemeDisabled())
         m_bRestartRequired = true;
 
+    UpdateColorDropdown();
     UpdateRemoveBtnState();
 }
 
@@ -471,30 +484,6 @@ void SvxAppearanceTabPage::InitThemes()
     UpdateRemoveBtnState();
 }
 
-void SvxAppearanceTabPage::InitAppearance()
-{
-    m_xAppearanceSystem->connect_toggled(LINK(this, SvxAppearanceTabPage, 
AppearanceChangeHdl));
-    m_xAppearanceDark->connect_toggled(LINK(this, SvxAppearanceTabPage, 
AppearanceChangeHdl));
-
-    AppearanceMode nAppearance = MiscSettings::GetAppColorMode();
-    eCurrentAppearanceMode = nAppearance;
-
-    switch (nAppearance)
-    {
-        case AppearanceMode::AUTO:
-            m_xAppearanceSystem->set_state(TRISTATE_TRUE);
-            break;
-        case AppearanceMode::LIGHT:
-            m_xAppearanceLight->set_state(TRISTATE_TRUE);
-            break;
-        case AppearanceMode::DARK:
-            m_xAppearanceDark->set_state(TRISTATE_TRUE);
-            break;
-        default:
-            eCurrentAppearanceMode = AppearanceMode::AUTO;
-    }
-}
-
 void SvxAppearanceTabPage::InitCustomization()
 {
     m_xColorEntryBtn->connect_changed(LINK(this, SvxAppearanceTabPage, 
ColorEntryChgHdl));
@@ -526,12 +515,10 @@ void SvxAppearanceTabPage::InitCustomization()
     EnableImageControls(false);
 }
 
-// disable remove if only one scheme available or if the selected theme is 
AUTOMATIC_COLOR_SCHEME
+// enable remove button for custom themes only
 void SvxAppearanceTabPage::UpdateRemoveBtnState()
 {
-    bool bEnableRemoveButton = (m_xSchemeList->get_count() > 1)
-                               && (m_xSchemeList->get_active_id() != 
AUTOMATIC_COLOR_SCHEME);
-    m_xRemoveSchemeBtn->set_sensitive(bEnableRemoveButton);
+    
m_xRemoveSchemeBtn->set_sensitive(ThemeColors::IsCustomTheme(m_xSchemeList->get_active_id()));
 }
 
 void SvxAppearanceTabPage::EnableImageControls(bool bEnabled)
@@ -559,29 +546,6 @@ void SvxAppearanceTabPage::UpdateColorDropdown()
         m_xColorChangeBtn->SelectEntry(rCurrentEntryColor.nLightColor);
 }
 
-// if the user changes appearance options for automatic theme, then follow the 
old behaviour
-// and change the document colors to light/dark based on the choice.
-void SvxAppearanceTabPage::UpdateDocumentAppearance()
-{
-    ColorConfigValue aValue;
-    bool bIsDarkModeEnabled = IsDarkModeEnabled();
-    for (size_t i = 0; i < WINDOWCOLOR; ++i)
-    {
-        if (bIsDarkModeEnabled)
-            aValue.nDarkColor = 
ColorConfig::GetDefaultColor(static_cast<ColorConfigEntry>(i), 1);
-        else
-            aValue.nLightColor = 
ColorConfig::GetDefaultColor(static_cast<ColorConfigEntry>(i), 0);
-
-        pColorConfig->SetColorValue(static_cast<ColorConfigEntry>(i), aValue);
-    }
-}
-
-bool SvxAppearanceTabPage::IsDarkModeEnabled()
-{
-    return eCurrentAppearanceMode == AppearanceMode::DARK
-           || (eCurrentAppearanceMode == AppearanceMode::AUTO && 
MiscSettings::GetUseDarkMode());
-}
-
 void SvxAppearanceTabPage::FillItemsList()
 {
     static const std::map<ColorConfigEntry, OUString> aRegistryEntries
diff --git a/cui/source/options/appearance.hxx 
b/cui/source/options/appearance.hxx
index 2c1e43c29197..7db33d275d4b 100644
--- a/cui/source/options/appearance.hxx
+++ b/cui/source/options/appearance.hxx
@@ -34,16 +34,12 @@ class SvxAppearanceTabPage : public SfxTabPage
 {
 private:
     bool m_bRestartRequired;
-    AppearanceMode eCurrentAppearanceMode;
     std::unique_ptr<EditableColorConfig> pColorConfig;
 
     std::unique_ptr<weld::ComboBox> m_xSchemeList;
     std::unique_ptr<weld::Button> m_xMoreThemesBtn;
     std::unique_ptr<weld::Button> m_xAddSchemeBtn;
     std::unique_ptr<weld::Button> m_xRemoveSchemeBtn;
-    std::unique_ptr<weld::RadioButton> m_xAppearanceSystem;
-    std::unique_ptr<weld::RadioButton> m_xAppearanceLight;
-    std::unique_ptr<weld::RadioButton> m_xAppearanceDark;
     std::unique_ptr<weld::ComboBox> m_xColorEntryBtn;
     std::unique_ptr<ColorListBox> m_xColorChangeBtn;
     std::unique_ptr<weld::CheckButton> m_xShowInDocumentChkBtn;
@@ -56,7 +52,6 @@ private:
 
     std::unique_ptr<weld::ComboBox> m_xBitmapDropDownBtn;
 
-    DECL_LINK(AppearanceChangeHdl, weld::Toggleable&, void);
     DECL_LINK(ColorEntryChgHdl, weld::ComboBox&, void);
     DECL_LINK(ColorValueChgHdl, ColorListBox&, void);
     DECL_LINK(ShowInDocumentHdl, weld::Toggleable&, void);
@@ -71,7 +66,6 @@ private:
     DECL_LINK(ResetAllBtnHdl, weld::Button&, void);
 
     void InitThemes();
-    void InitAppearance();
     void InitCustomization();
     void UpdateControlsState();
     void LoadSchemeList();
@@ -79,8 +73,6 @@ private:
     void UpdateRemoveBtnState();
     void EnableImageControls(bool bEnabled);
     void UpdateColorDropdown();
-    void UpdateDocumentAppearance();
-    bool IsDarkModeEnabled();
     void FillItemsList();
     size_t GetActiveEntry();
 
diff --git a/cui/uiconfig/ui/appearance.ui b/cui/uiconfig/ui/appearance.ui
index 9a0a464c8c40..436aeea8ebaf 100644
--- a/cui/uiconfig/ui/appearance.ui
+++ b/cui/uiconfig/ui/appearance.ui
@@ -135,111 +135,6 @@
             <property name="visible">True</property>
             <property name="can-focus">False</property>
             <property name="orientation">vertical</property>
-            <child>
-              <object class="GtkFrame" id="options">
-                <property name="visible">True</property>
-                <property name="can-focus">False</property>
-                <property name="margin-start">12</property>
-                <property name="margin-bottom">6</property>
-                <property name="label-xalign">0</property>
-                <property name="shadow-type">none</property>
-                <child>
-                  <!-- n-columns=2 n-rows=1 -->
-                  <object class="GtkGrid">
-                    <property name="visible">True</property>
-                    <property name="can-focus">False</property>
-                    <property name="margin-start">12</property>
-                    <property name="margin-top">6</property>
-                    <child>
-                      <object class="GtkLabel" id="appearancelb">
-                        <property name="visible">True</property>
-                        <property name="can-focus">False</property>
-                        <property name="valign">start</property>
-                        <property name="margin-end">6</property>
-                        <property name="label" translatable="yes" 
context="appearancetabpage|appearancelb">Appearance:</property>
-                        <property name="use-underline">True</property>
-                        <property name="mnemonic-widget">system</property>
-                      </object>
-                      <packing>
-                        <property name="left-attach">0</property>
-                        <property name="top-attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkBox">
-                        <property name="visible">True</property>
-                        <property name="can-focus">False</property>
-                        <property name="orientation">vertical</property>
-                        <child>
-                          <object class="GtkRadioButton" id="system">
-                            <property name="label" translatable="yes" 
context="appearancetabpage|system">System</property>
-                            <property name="visible">True</property>
-                            <property name="can-focus">True</property>
-                            <property name="receives-default">False</property>
-                            <property name="active">True</property>
-                            <property name="draw-indicator">True</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" id="light">
-                            <property name="label" translatable="yes" 
context="appearancetabpage|light">Light</property>
-                            <property name="visible">True</property>
-                            <property name="can-focus">True</property>
-                            <property name="receives-default">False</property>
-                            <property name="draw-indicator">True</property>
-                            <property name="group">system</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" id="dark">
-                            <property name="label" translatable="yes" 
context="appearancetabpage|dark">Dark</property>
-                            <property name="visible">True</property>
-                            <property name="can-focus">True</property>
-                            <property name="receives-default">False</property>
-                            <property name="draw-indicator">True</property>
-                            <property name="group">system</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left-attach">1</property>
-                        <property name="top-attach">0</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-                <child type="label">
-                  <object class="GtkLabel" id="optionslb">
-                    <property name="visible">True</property>
-                    <property name="can-focus">False</property>
-                    <property name="label" translatable="yes" 
context="appearancetabpage|optionslb">Options</property>
-                    <attributes>
-                      <attribute name="weight" value="bold"/>
-                    </attributes>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
             <child>
               <object class="GtkFrame" id="items">
                 <property name="visible">True</property>
diff --git a/include/svtools/colorcfg.hxx b/include/svtools/colorcfg.hxx
index 40417e507a0c..43698ff529f6 100644
--- a/include/svtools/colorcfg.hxx
+++ b/include/svtools/colorcfg.hxx
@@ -131,6 +131,8 @@ enum ColorConfigEntry : int
 };
 
 constexpr OUString AUTOMATIC_COLOR_SCHEME = 
u"COLOR_SCHEME_LIBREOFFICE_AUTOMATIC"_ustr;
+constexpr OUString LIGHT_COLOR_SCHEME = u"COLOR_SCHEME_LIBREOFFICE_LIGHT"_ustr;
+constexpr OUString DARK_COLOR_SCHEME = u"COLOR_SCHEME_LIBREOFFICE_DARK"_ustr;
 constexpr size_t THEME_APPLICATION_COLORS_COUNT = ColorConfigEntryCount - 
WINDOWCOLOR;
 
 namespace {
diff --git a/include/vcl/themecolors.hxx b/include/vcl/themecolors.hxx
index e00e228d9d69..c2498e9cd479 100644
--- a/include/vcl/themecolors.hxx
+++ b/include/vcl/themecolors.hxx
@@ -52,6 +52,22 @@ public:
         return rThemeName == svtools::AUTOMATIC_COLOR_SCHEME;
     }
 
+    static bool IsLightTheme(std::u16string_view rThemeName)
+    {
+        return rThemeName == svtools::LIGHT_COLOR_SCHEME;
+    }
+
+    static bool IsDarkTheme(std::u16string_view rThemeName)
+    {
+        return rThemeName == svtools::DARK_COLOR_SCHEME;
+    }
+
+    static bool IsCustomTheme(std::u16string_view rThemeName)
+    {
+        return !IsAutomaticTheme(rThemeName) && !IsLightTheme(rThemeName)
+               && !IsDarkTheme(rThemeName);
+    }
+
     static ThemeState GetThemeState();
     static void SetThemeState(ThemeState eState);
 
diff --git a/officecfg/registry/data/org/openoffice/Office/UI.xcu 
b/officecfg/registry/data/org/openoffice/Office/UI.xcu
index 4524acda923b..808d77be34ee 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI.xcu
@@ -915,6 +915,1552 @@
           </prop>
         </node>
       </node>
+      <node oor:name="COLOR_SCHEME_LIBREOFFICE_LIGHT" oor:op="replace">
+        <!-- Group_General -->
+        <node oor:name="DocColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="DocBoundaries">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="AppBackground">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="BackgroundType">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Bitmap">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="TableBoundaries">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="FontColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Links">
+          <prop oor:name="IsVisible">
+            <value>false</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="LinksVisited">
+          <prop oor:name="IsVisible">
+            <value>false</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Spell">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Grammar">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SmartTags">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Shadow">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterTextGrid">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterFieldShadings">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterIdxShadings">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterDirectCursor">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterScriptIndicator">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterSectionBoundaries">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterHeaderFooterMark">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterPageBreaks">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterNonPrintChars">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="HTMLSGML">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="HTMLComment">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="HTMLKeyword">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="HTMLUnknown">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcGrid">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcCellFocus">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcPageBreak">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcPageBreakManual">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcPageBreakAutomatic">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcHiddenColRow">
+          <prop oor:name="IsVisible">
+            <value>false</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcTextOverflow">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcComments">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcDetective">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcDetectiveError">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcReference">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcNotesBackground">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcValue">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcFormula">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcText">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcProtectedBackground">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="DrawGrid">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author1">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author2">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author3">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author4">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author5">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author6">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author7">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author8">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author9">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICEditor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICIdentifier">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICComment">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICNumber">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICString">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICOperator">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICKeyword">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICError">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLIdentifier">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLNumber">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLString">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLOperator">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLKeyword">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLParameter">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLComment">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <!-- Group Application -->
+        <node oor:name="WindowColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WindowTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BaseColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ButtonColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ButtonTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="AccentColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="DisabledColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="DisabledTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ShadowColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SeparatorColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="FaceColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ActiveColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ActiveTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ActiveBorderColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="FieldColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuBarColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuBarTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuBarHighlightColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuBarHighlightTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuHighlightColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuHighlightTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuBorderColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="InactiveColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="InactiveTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="InactiveBorderColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+      </node>
+      <node oor:name="COLOR_SCHEME_LIBREOFFICE_DARK" oor:op="replace">
+        <!-- Group_General -->
+        <node oor:name="DocColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="DocBoundaries">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="AppBackground">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="BackgroundType">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Bitmap">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="TableBoundaries">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="FontColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Links">
+          <prop oor:name="IsVisible">
+            <value>false</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="LinksVisited">
+          <prop oor:name="IsVisible">
+            <value>false</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Spell">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Grammar">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SmartTags">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Shadow">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterTextGrid">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterFieldShadings">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterIdxShadings">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterDirectCursor">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterScriptIndicator">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterSectionBoundaries">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterHeaderFooterMark">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterPageBreaks">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WriterNonPrintChars">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="HTMLSGML">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="HTMLComment">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="HTMLKeyword">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="HTMLUnknown">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcGrid">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcCellFocus">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcPageBreak">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcPageBreakManual">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcPageBreakAutomatic">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcHiddenColRow">
+          <prop oor:name="IsVisible">
+            <value>false</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcTextOverflow">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcComments">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcDetective">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcDetectiveError">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcReference">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcNotesBackground">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcValue">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcFormula">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcText">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="CalcProtectedBackground">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="DrawGrid">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author1">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author2">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author3">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author4">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author5">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author6">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author7">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author8">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="Author9">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICEditor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICIdentifier">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICComment">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICNumber">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICString">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICOperator">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICKeyword">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BASICError">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLIdentifier">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLNumber">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLString">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLOperator">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLKeyword">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLParameter">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SQLComment">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <!-- Group Application -->
+        <node oor:name="WindowColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="WindowTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="BaseColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ButtonColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ButtonTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="AccentColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="DisabledColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="DisabledTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ShadowColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="SeparatorColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="FaceColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ActiveColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ActiveTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="ActiveBorderColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="FieldColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuBarColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuBarTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuBarHighlightColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuBarHighlightTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuHighlightColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuHighlightTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="MenuBorderColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="InactiveColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="InactiveTextColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+        <node oor:name="InactiveBorderColor">
+          <prop oor:name="Light">
+            <value xsi:nil="true"/>
+          </prop>
+          <prop oor:name="Dark">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
+      </node>
     </node>
   </node>
 </oor:component-data>
diff --git a/svtools/source/config/colorcfg.cxx 
b/svtools/source/config/colorcfg.cxx
index b7aea178700b..a1b3e00ad56c 100644
--- a/svtools/source/config/colorcfg.cxx
+++ b/svtools/source/config/colorcfg.cxx
@@ -171,8 +171,8 @@ void ColorConfig_Impl::Load(const OUString& rScheme)
     }
     m_sLoadedScheme = sScheme;
 
-    // in cases like theme not found or extension removal, use 
AUTOMATIC_COLOR_SCHEME as fallback.
-    if (!ThemeColors::IsAutomaticTheme(sScheme))
+    // use automatic theme as the fallback, in case the theme extension was 
removed
+    if (ThemeColors::IsCustomTheme(sScheme))
     {
         uno::Sequence<OUString> aSchemes = GetSchemeNames();
         bool bFound = false;

Reply via email to