cui/inc/strings.hrc | 2 cui/source/options/appearance.cxx | 154 - cui/source/options/appearance.hxx | 8 cui/uiconfig/ui/appearance.ui | 120 - 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(+), 225 deletions(-)
New commits: commit b145d0925a68863aae03c123d827de19dc784428 Author: Sahil Gautam <sahil.gautam.ext...@allotropia.de> AuthorDate: Tue Apr 22 14:00:00 2025 +0530 Commit: Sahil Gautam <sahil.gautam.ext...@allotropia.de> CommitDate: Wed May 14 08:58:45 2025 +0200 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 <sahil.gautam.ext...@allotropia.de> Tested-by: Jenkins diff --git a/cui/inc/strings.hrc b/cui/inc/strings.hrc index 982845bb3795..ce8d0bbe3f95 100644 --- a/cui/inc/strings.hrc +++ b/cui/inc/strings.hrc @@ -402,6 +402,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 225bfbd862ac..10a796aa038c 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); + + // 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]); - if (pColorConfig->GetCurrentSchemeName() == AUTOMATIC_COLOR_SCHEME) + // 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 pColorConfig->ClearModified(); pColorConfig->DisableBroadcast(); @@ -215,25 +219,6 @@ IMPL_LINK_NOARG(SvxAppearanceTabPage, ShowInDocumentHdl, weld::Toggleable&, void pColorConfig->SetColorValue(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 @@ -316,14 +301,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(); } @@ -479,30 +492,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)); @@ -534,12 +523,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) @@ -568,29 +555,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 73a2a44f248e..3ee7295c1eb5 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,15 +66,12 @@ private: DECL_LINK(ResetAllBtnHdl, weld::Button&, void); void InitThemes(); - void InitAppearance(); void InitCustomization(); void LoadSchemeList(); void UpdateRemoveBtnState(); void EnableImageControls(bool bEnabled); void UpdateColorDropdown(); - void UpdateDocumentAppearance(); - bool IsDarkModeEnabled(); void FillItemsList(); ColorConfigEntry GetActiveEntry(); diff --git a/cui/uiconfig/ui/appearance.ui b/cui/uiconfig/ui/appearance.ui index a042151b2f2a..b3463f394b23 100644 --- a/cui/uiconfig/ui/appearance.ui +++ b/cui/uiconfig/ui/appearance.ui @@ -155,126 +155,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> - <child internal-child="accessible"> - <object class="AtkObject" id="system-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="appearance|extended_tip|system">The application and document appearance depends on the desktop environment theme.</property> - </object> - </child> - </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> - <child internal-child="accessible"> - <object class="AtkObject" id="light-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="appearance|extended_tip|light">Light theme colors are used.</property> - </object> - </child> - </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> - <child internal-child="accessible"> - <object class="AtkObject" id="dark-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="appearance|extended_tip|dark">Dark theme colors are used.</property> - </object> - </child> - </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 7030abc21c3a..0dcfb7d2acf1 100644 --- a/include/svtools/colorcfg.hxx +++ b/include/svtools/colorcfg.hxx @@ -130,6 +130,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 90d4d640b8f8..27f4677db5d8 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI.xcu @@ -910,6 +910,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 ce664ce40288..c0e3e16feea7 100644 --- a/svtools/source/config/colorcfg.cxx +++ b/svtools/source/config/colorcfg.cxx @@ -177,8 +177,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 = std::any_of(aSchemes.begin(), aSchemes.end(),