summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--icon-themes/breeze/links.txt3
-rw-r--r--icon-themes/breeze_dark/links.txt4
-rw-r--r--icon-themes/colibre/links.txt3
-rw-r--r--icon-themes/colibre_dark/links.txt3
-rw-r--r--icon-themes/elementary/links.txt3
-rw-r--r--icon-themes/karasa_jaga/links.txt3
-rw-r--r--icon-themes/sifr/links.txt3
-rw-r--r--icon-themes/sifr_dark/links.txt3
-rw-r--r--icon-themes/sukapura/links.txt3
-rw-r--r--icon-themes/sukapura_dark/links.txt3
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu11
-rw-r--r--sc/uiconfig/scalc/ui/notebookbar.ui54
-rw-r--r--sd/uiconfig/sdraw/ui/notebookbar.ui54
-rw-r--r--sd/uiconfig/simpress/ui/notebookbar.ui54
-rw-r--r--sfx2/sdi/appslots.sdi1
-rw-r--r--sfx2/sdi/sfx.sdi5
-rw-r--r--sfx2/source/appl/appserv.cxx55
-rw-r--r--sw/uiconfig/swriter/ui/notebookbar.ui54
18 files changed, 313 insertions, 6 deletions
diff --git a/icon-themes/breeze/links.txt b/icon-themes/breeze/links.txt
index 8eaca399a5f0..23ba813b7107 100644
--- a/icon-themes/breeze/links.txt
+++ b/icon-themes/breeze/links.txt
@@ -1486,16 +1486,19 @@ cmd/sc_leftpara.png cmd/sc_alignleft.png
cmd/sc_rightpara.png cmd/sc_alignright.png
# View menu
+cmd/32/changetheme.png cmd/32/symbolshapes.moon.png
cmd/32/gridmenu.png cmd/32/gridvisible.png
cmd/32/navigatemenu.png cmd/32/navigator.png
cmd/32/scrollbarmenu.png cmd/32/scrollbar.png
cmd/32/sidebarmenu.png cmd/32/sidebar.png
+cmd/lc_changetheme.png cmd/lc_symbolshapes.moon.png
cmd/lc_gridmenu.png cmd/lc_gridvisible.png
cmd/lc_navigatemenu.png cmd/lc_navigator.png
cmd/lc_scrollbarmenu.png cmd/lc_scrollbar.png
cmd/lc_sidebarmenu.png cmd/lc_sidebar.png
+cmd/sc_changetheme.png cmd/sc_symbolshapes.moon.png
cmd/sc_gridmenu.png cmd/sc_gridvisible.png
cmd/sc_navigatemenu.png cmd/sc_navigator.png
cmd/sc_scrollbarmenu.png cmd/sc_scrollbar.png
diff --git a/icon-themes/breeze_dark/links.txt b/icon-themes/breeze_dark/links.txt
index 8eaca399a5f0..748bc16ab2d2 100644
--- a/icon-themes/breeze_dark/links.txt
+++ b/icon-themes/breeze_dark/links.txt
@@ -1486,16 +1486,20 @@ cmd/sc_leftpara.png cmd/sc_alignleft.png
cmd/sc_rightpara.png cmd/sc_alignright.png
# View menu
+
+cmd/32/changetheme.png cmd/32/symbolshapes.moon.png
cmd/32/gridmenu.png cmd/32/gridvisible.png
cmd/32/navigatemenu.png cmd/32/navigator.png
cmd/32/scrollbarmenu.png cmd/32/scrollbar.png
cmd/32/sidebarmenu.png cmd/32/sidebar.png
+cmd/lc_changetheme.png cmd/lc_symbolshapes.moon.png
cmd/lc_gridmenu.png cmd/lc_gridvisible.png
cmd/lc_navigatemenu.png cmd/lc_navigator.png
cmd/lc_scrollbarmenu.png cmd/lc_scrollbar.png
cmd/lc_sidebarmenu.png cmd/lc_sidebar.png
+cmd/sc_changetheme.png cmd/sc_symbolshapes.moon.png
cmd/sc_gridmenu.png cmd/sc_gridvisible.png
cmd/sc_navigatemenu.png cmd/sc_navigator.png
cmd/sc_scrollbarmenu.png cmd/sc_scrollbar.png
diff --git a/icon-themes/colibre/links.txt b/icon-themes/colibre/links.txt
index d7de3b9fdd55..ede4f262cddb 100644
--- a/icon-themes/colibre/links.txt
+++ b/icon-themes/colibre/links.txt
@@ -1279,12 +1279,15 @@ cmd/sc_thesaurusdialog.png cmd/sc_thesaurus.png
# View
cmd/32/availabletoolbars.png cmd/32/showtoolbar.png
+cmd/32/changetheme.png cmd/32/symbolshapes.moon.png
cmd/32/sidebarmenu.png cmd/32/sidebar.png
cmd/32/toolbarsmenu.png cmd/32/showtoolbar.png
cmd/lc_availabletoolbars.png cmd/lc_showtoolbar.png
+cmd/lc_changetheme.png cmd/lc_symbolshapes.moon.png
cmd/lc_sidebarmenu.png cmd/lc_sidebar.png
cmd/lc_toolbarsmenu.png cmd/lc_showtoolbar.png
cmd/sc_availabletoolbars.png cmd/sc_showtoolbar.png
+cmd/sc_changetheme.png cmd/sc_symbolshapes.moon.png
cmd/sc_sidebarmenu.png cmd/sc_sidebar.png
cmd/sc_toolbarsmenu.png cmd/sc_showtoolbar.png
diff --git a/icon-themes/colibre_dark/links.txt b/icon-themes/colibre_dark/links.txt
index d7de3b9fdd55..ede4f262cddb 100644
--- a/icon-themes/colibre_dark/links.txt
+++ b/icon-themes/colibre_dark/links.txt
@@ -1279,12 +1279,15 @@ cmd/sc_thesaurusdialog.png cmd/sc_thesaurus.png
# View
cmd/32/availabletoolbars.png cmd/32/showtoolbar.png
+cmd/32/changetheme.png cmd/32/symbolshapes.moon.png
cmd/32/sidebarmenu.png cmd/32/sidebar.png
cmd/32/toolbarsmenu.png cmd/32/showtoolbar.png
cmd/lc_availabletoolbars.png cmd/lc_showtoolbar.png
+cmd/lc_changetheme.png cmd/lc_symbolshapes.moon.png
cmd/lc_sidebarmenu.png cmd/lc_sidebar.png
cmd/lc_toolbarsmenu.png cmd/lc_showtoolbar.png
cmd/sc_availabletoolbars.png cmd/sc_showtoolbar.png
+cmd/sc_changetheme.png cmd/sc_symbolshapes.moon.png
cmd/sc_sidebarmenu.png cmd/sc_sidebar.png
cmd/sc_toolbarsmenu.png cmd/sc_showtoolbar.png
diff --git a/icon-themes/elementary/links.txt b/icon-themes/elementary/links.txt
index 9ad6b73033fb..0c320f04ccbe 100644
--- a/icon-themes/elementary/links.txt
+++ b/icon-themes/elementary/links.txt
@@ -2472,6 +2472,7 @@ cmd/sc_pastespecialmenu.png cmd/sc_pastespecial.png
# View menu
cmd/32/availabletoolbars.png cmd/32/showtoolbar.png
+cmd/32/changetheme.png cmd/32/symbolshapes.moon.png
cmd/32/gridmenu.png cmd/32/gridvisible.png
cmd/32/rulermenu.png cmd/32/ruler.png
cmd/32/scrollbarmenu.png cmd/32/scrollbar.png
@@ -2482,6 +2483,7 @@ cmd/32/viewtrackchanges.png cmd/32/showtrackedchanges.png
cmd/32/zoommenu.png cmd/32/zoom.png
cmd/lc_availabletoolbars.png cmd/lc_showtoolbar.png
+cmd/lc_changetheme.png cmd/lc_symbolshapes.moon.png
cmd/lc_gridmenu.png cmd/lc_gridvisible.png
cmd/lc_rulermenu.png cmd/lc_ruler.png
cmd/lc_scrollbarmenu.png cmd/lc_scrollbar.png
@@ -2492,6 +2494,7 @@ cmd/lc_viewtrackchanges.png cmd/lc_showtrackedchanges.png
cmd/lc_zoommenu.png cmd/lc_zoom.png
cmd/sc_availabletoolbars.png cmd/sc_showtoolbar.png
+cmd/sc_changetheme.png cmd/sc_symbolshapes.moon.png
cmd/sc_gridmenu.png cmd/sc_gridvisible.png
cmd/sc_rulermenu.png cmd/sc_ruler.png
cmd/sc_scrollbarmenu.png cmd/sc_scrollbar.png
diff --git a/icon-themes/karasa_jaga/links.txt b/icon-themes/karasa_jaga/links.txt
index e52e4529e576..d71263a1f279 100644
--- a/icon-themes/karasa_jaga/links.txt
+++ b/icon-themes/karasa_jaga/links.txt
@@ -64,6 +64,7 @@ cmd/32/cellvertcenter.png cmd/32/alignverticalcenter.png
cmd/32/cellverttop.png cmd/32/aligntop.png
cmd/32/centerpara.png cmd/32/alignhorizontalcenter.png
cmd/32/changesmenu.png cmd/32/accepttrackedchange.png
+cmd/32/changetheme.png cmd/32/symbolshapes.moon.png
cmd/32/charactermenu.png cmd/32/fontdialog.png
cmd/32/charbackcolor.png cmd/32/backcolor.png
cmd/32/charmapcontrol.png cmd/32/insertsymbol.png
@@ -808,6 +809,7 @@ cmd/lc_cellvertcenter.png cmd/lc_alignverticalcenter.png
cmd/lc_cellverttop.png cmd/lc_aligntop.png
cmd/lc_centerpara.png cmd/lc_alignhorizontalcenter.png
cmd/lc_changesmenu.png cmd/lc_accepttrackedchange.png
+cmd/lc_changetheme.png cmd/lc_symbolshapes.moon.png
cmd/lc_charactermenu.png cmd/lc_fontdialog.png
cmd/lc_charbackcolor.png cmd/lc_backcolor.png
cmd/lc_charmapcontrol.png cmd/lc_insertsymbol.png
@@ -1226,6 +1228,7 @@ cmd/sc_cellvertcenter.png cmd/sc_alignverticalcenter.png
cmd/sc_cellverttop.png cmd/sc_aligntop.png
cmd/sc_centerpara.png cmd/sc_alignhorizontalcenter.png
cmd/sc_changesmenu.png cmd/sc_accepttrackedchange.png
+cmd/sc_changetheme.png cmd/sc_symbolshapes.moon.png
cmd/sc_charactermenu.png cmd/sc_fontdialog.png
cmd/sc_charbackcolor.png cmd/sc_backcolor.png
cmd/sc_charmapcontrol.png cmd/sc_insertsymbol.png
diff --git a/icon-themes/sifr/links.txt b/icon-themes/sifr/links.txt
index 29d15a01a93e..5733722da4cb 100644
--- a/icon-themes/sifr/links.txt
+++ b/icon-themes/sifr/links.txt
@@ -1356,16 +1356,19 @@ cmd/sc_rightpara.png cmd/sc_alignright.png
# View
cmd/32/availabletoolbars.png cmd/32/showtoolbar.png
+cmd/32/changetheme.png cmd/32/symbolshapes.moon.png
cmd/32/sidebarmenu.png cmd/32/sidebar.png
cmd/32/toolbarsmenu.png cmd/32/showtoolbar.png
cmd/32/viewbounds.png cmd/32/charfontname.png
cmd/lc_availabletoolbars.png cmd/lc_showtoolbar.png
+cmd/lc_changetheme.png cmd/lc_symbolshapes.moon.png
cmd/lc_sidebarmenu.png cmd/lc_sidebar.png
cmd/lc_toolbarsmenu.png cmd/lc_showtoolbar.png
cmd/lc_viewbounds.png cmd/lc_charfontname.png
cmd/sc_availabletoolbars.png cmd/sc_showtoolbar.png
+cmd/sc_changetheme.png cmd/sc_symbolshapes.moon.png
cmd/sc_sidebarmenu.png cmd/sc_sidebar.png
cmd/sc_toolbarsmenu.png cmd/sc_showtoolbar.png
cmd/sc_viewbounds.png cmd/sc_charfontname.png
diff --git a/icon-themes/sifr_dark/links.txt b/icon-themes/sifr_dark/links.txt
index 29d15a01a93e..5733722da4cb 100644
--- a/icon-themes/sifr_dark/links.txt
+++ b/icon-themes/sifr_dark/links.txt
@@ -1356,16 +1356,19 @@ cmd/sc_rightpara.png cmd/sc_alignright.png
# View
cmd/32/availabletoolbars.png cmd/32/showtoolbar.png
+cmd/32/changetheme.png cmd/32/symbolshapes.moon.png
cmd/32/sidebarmenu.png cmd/32/sidebar.png
cmd/32/toolbarsmenu.png cmd/32/showtoolbar.png
cmd/32/viewbounds.png cmd/32/charfontname.png
cmd/lc_availabletoolbars.png cmd/lc_showtoolbar.png
+cmd/lc_changetheme.png cmd/lc_symbolshapes.moon.png
cmd/lc_sidebarmenu.png cmd/lc_sidebar.png
cmd/lc_toolbarsmenu.png cmd/lc_showtoolbar.png
cmd/lc_viewbounds.png cmd/lc_charfontname.png
cmd/sc_availabletoolbars.png cmd/sc_showtoolbar.png
+cmd/sc_changetheme.png cmd/sc_symbolshapes.moon.png
cmd/sc_sidebarmenu.png cmd/sc_sidebar.png
cmd/sc_toolbarsmenu.png cmd/sc_showtoolbar.png
cmd/sc_viewbounds.png cmd/sc_charfontname.png
diff --git a/icon-themes/sukapura/links.txt b/icon-themes/sukapura/links.txt
index 22ffbd1529ea..9552ccb3dbf5 100644
--- a/icon-themes/sukapura/links.txt
+++ b/icon-themes/sukapura/links.txt
@@ -1314,12 +1314,15 @@ cmd/sc_thesaurusdialog.png cmd/sc_thesaurus.png
# View
cmd/32/availabletoolbars.png cmd/32/showtoolbar.png
+cmd/32/changetheme.png cmd/32/symbolshapes.moon.png
cmd/32/sidebarmenu.png cmd/32/sidebar.png
cmd/32/toolbarsmenu.png cmd/32/showtoolbar.png
cmd/lc_availabletoolbars.png cmd/lc_showtoolbar.png
+cmd/lc_changetheme.png cmd/lc_symbolshapes.moon.png
cmd/lc_sidebarmenu.png cmd/lc_sidebar.png
cmd/lc_toolbarsmenu.png cmd/lc_showtoolbar.png
cmd/sc_availabletoolbars.png cmd/sc_showtoolbar.png
+cmd/sc_changetheme.png cmd/sc_symbolshapes.moon.png
cmd/sc_sidebarmenu.png cmd/sc_sidebar.png
cmd/sc_toolbarsmenu.png cmd/sc_showtoolbar.png
diff --git a/icon-themes/sukapura_dark/links.txt b/icon-themes/sukapura_dark/links.txt
index 22ffbd1529ea..9552ccb3dbf5 100644
--- a/icon-themes/sukapura_dark/links.txt
+++ b/icon-themes/sukapura_dark/links.txt
@@ -1314,12 +1314,15 @@ cmd/sc_thesaurusdialog.png cmd/sc_thesaurus.png
# View
cmd/32/availabletoolbars.png cmd/32/showtoolbar.png
+cmd/32/changetheme.png cmd/32/symbolshapes.moon.png
cmd/32/sidebarmenu.png cmd/32/sidebar.png
cmd/32/toolbarsmenu.png cmd/32/showtoolbar.png
cmd/lc_availabletoolbars.png cmd/lc_showtoolbar.png
+cmd/lc_changetheme.png cmd/lc_symbolshapes.moon.png
cmd/lc_sidebarmenu.png cmd/lc_sidebar.png
cmd/lc_toolbarsmenu.png cmd/lc_showtoolbar.png
cmd/sc_availabletoolbars.png cmd/sc_showtoolbar.png
+cmd/sc_changetheme.png cmd/sc_symbolshapes.moon.png
cmd/sc_sidebarmenu.png cmd/sc_sidebar.png
cmd/sc_toolbarsmenu.png cmd/sc_showtoolbar.png
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index 4c4365a5ad9a..6567f42c538e 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -1396,6 +1396,17 @@ bit 3 (0x8): #define UICOMMANDDESCRIPTION_PROPERTIES_TOGGLEBUTTON 8
<value xml:lang="en-US">Undo</value>
</prop>
</node>
+ <node oor:name=".uno:ChangeTheme" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Dark Mode</value>
+ </prop>
+ <prop oor:name="TooltipLabel" oor:type="xs:string">
+ <value xml:lang="en-US">Toggle between dark and light modes</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
<node oor:name=".uno:ToggleControlFocus" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">Control Focus</value>
diff --git a/sc/uiconfig/scalc/ui/notebookbar.ui b/sc/uiconfig/scalc/ui/notebookbar.ui
index cdbe495a3fd2..9215cf584de3 100644
--- a/sc/uiconfig/scalc/ui/notebookbar.ui
+++ b/sc/uiconfig/scalc/ui/notebookbar.ui
@@ -9709,6 +9709,60 @@
</packing>
</child>
<child>
+ <object class="VclOptionalBox" id="View-Section-DarkMode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <child>
+ <object class="GtkSeparator" id="separator-section-darkmode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">5</property>
+ <property name="margin_bottom">5</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="sfxlo-NotebookbarToolBox" id="Section-darkmode">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <property name="toolbar_style">both</property>
+ <property name="show_arrow">False</property>
+ <property name="icon_size">3</property>
+ <child>
+ <object class="GtkToolButton" id="View-DarkMode">
+ <property name="visible">False</property>
+ <property name="action_name">.uno:ChangeTheme</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
<object class="VclOptionalBox" id="View-Section-Zoom">
<property name="visible">True</property>
<property name="can_focus">False</property>
diff --git a/sd/uiconfig/sdraw/ui/notebookbar.ui b/sd/uiconfig/sdraw/ui/notebookbar.ui
index 32e7212d5e70..c3923c4daa5f 100644
--- a/sd/uiconfig/sdraw/ui/notebookbar.ui
+++ b/sd/uiconfig/sdraw/ui/notebookbar.ui
@@ -7903,6 +7903,60 @@
</packing>
</child>
<child>
+ <object class="VclOptionalBox" id="View-Section-DarkMode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <child>
+ <object class="GtkSeparator" id="separator-section-darkmode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">5</property>
+ <property name="margin_bottom">5</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="sfxlo-NotebookbarToolBox" id="Section-darkmode">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <property name="toolbar_style">both</property>
+ <property name="show_arrow">False</property>
+ <property name="icon_size">3</property>
+ <child>
+ <object class="GtkToolButton" id="View-DarkMode">
+ <property name="visible">False</property>
+ <property name="action_name">.uno:ChangeTheme</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">11</property>
+ </packing>
+ </child>
+ <child>
<object class="VclOptionalBox" id="View-Section-DisplayQuality">
<property name="visible">True</property>
<property name="can_focus">False</property>
diff --git a/sd/uiconfig/simpress/ui/notebookbar.ui b/sd/uiconfig/simpress/ui/notebookbar.ui
index 18530c457d7a..6fe56e76ac92 100644
--- a/sd/uiconfig/simpress/ui/notebookbar.ui
+++ b/sd/uiconfig/simpress/ui/notebookbar.ui
@@ -9148,6 +9148,60 @@
</packing>
</child>
<child>
+ <object class="VclOptionalBox" id="View-Section-DarkMode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <child>
+ <object class="GtkSeparator" id="separator-section-darkmode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">5</property>
+ <property name="margin_bottom">5</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="sfxlo-NotebookbarToolBox" id="Section-darkmode">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <property name="toolbar_style">both</property>
+ <property name="show_arrow">False</property>
+ <property name="icon_size">3</property>
+ <child>
+ <object class="GtkToolButton" id="View-DarkMode">
+ <property name="visible">False</property>
+ <property name="action_name">.uno:ChangeTheme</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">14</property>
+ </packing>
+ </child>
+ <child>
<object class="VclOptionalBox" id="View-Section-DisplayQuality">
<property name="visible">True</property>
<property name="can_focus">False</property>
diff --git a/sfx2/sdi/appslots.sdi b/sfx2/sdi/appslots.sdi
index 2ea5dd7a7580..45166d3376f6 100644
--- a/sfx2/sdi/appslots.sdi
+++ b/sfx2/sdi/appslots.sdi
@@ -67,6 +67,7 @@ interface Application
FN_CHANGE_THEME // ole(no) api(final/play/rec)
[
ExecMethod = MiscExec_Impl ;
+ StateMethod = MiscState_Impl ;
]
FN_INVERT_BACKGROUND // ole(no) api(final/play/rec)
[
diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi
index 23e97115b737..b8e116a7a042 100644
--- a/sfx2/sdi/sfx.sdi
+++ b/sfx2/sdi/sfx.sdi
@@ -5901,12 +5901,15 @@ SfxVoidItem ChangeTheme FN_CHANGE_THEME
[
AutoUpdate = FALSE,
FastCall = FALSE,
- ReadOnlyDoc = FALSE,
+ ReadOnlyDoc = TRUE,
Toggle = FALSE,
Container = FALSE,
RecordAbsolute = FALSE,
RecordPerSet;
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ ToolBoxConfig = TRUE,
GroupId = SfxGroupId::Application;
]
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index 8da1edce2c1f..8407e0248594 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -601,20 +601,57 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
case FN_CHANGE_THEME:
{
const SfxStringItem* pNewThemeArg = rReq.GetArg<SfxStringItem>(FN_PARAM_NEW_THEME);
+ OUString sSchemeName
+ = pNewThemeArg ? pNewThemeArg->GetValue() : "COLOR_SCHEME_LIBREOFFICE_AUTOMATIC";
if (!pNewThemeArg)
{
- SAL_WARN("sfx.appl", "FN_CHANGE_THEME: no theme name");
- break;
+ // toggle between light and dark mode
+
+ // There are two separate things that can be dark mode themed: UI and document
+ // The modes can be 0 (automatic - what the OS/VCL asks for), 1 (light), or 2 (dark)
+
+ // Since only gtk/osx/win support UI theme, toggle based on document colors
+ // Automatic in this case means "whatever GetUseDarkMode() says"
+ const bool bWasInDarkMode
+ = MiscSettings::GetAppColorMode() == 2
+ || (MiscSettings::GetAppColorMode() == 0 && MiscSettings::GetUseDarkMode());
+
+ // Set the UI theme. It would be nicest to use automatic whenever possible
+ sal_Int32 nUseMode = 0; // automatic
+ if (MiscSettings::GetDarkMode() != 0)
+ MiscSettings::SetDarkMode(nUseMode);
+
+ if (MiscSettings::GetUseDarkMode() == bWasInDarkMode)
+ {
+ // automatic didn't toggle, so force the desired theme
+ nUseMode = bWasInDarkMode ? 1 : 2;
+ MiscSettings::SetDarkMode(nUseMode);
+ }
+
+ // Now set the document theme
+ // If the UI can be themed, then the document theme can always remain on automatic.
+ nUseMode = 0;
+ // NOTE: since SetDarkMode has run, GetUseDarkMode might return a different result.
+ if (MiscSettings::GetUseDarkMode() == bWasInDarkMode)
+ {
+ nUseMode = bWasInDarkMode ? 1 : 2;
+ sSchemeName = bWasInDarkMode ? u"Light" : u"Dark";
+ }
+ MiscSettings::SetAppColorMode(nUseMode);
}
- const OUString& rSchemeName = pNewThemeArg->GetValue();
svtools::EditableColorConfig aEditableConfig;
// kit explicitly ignores changes to the global color scheme, except for the current ViewShell,
// so an attempted change to the same global color scheme when the now current ViewShell ignored
// the last change requires re-sending the change. In which case individual shells will have to
// decide if this color-scheme change is a change from their perspective to avoid unnecessary
// invalidations.
- if (aEditableConfig.GetCurrentSchemeName() != rSchemeName || comphelper::LibreOfficeKit::isActive())
- aEditableConfig.LoadScheme(rSchemeName);
+ if (!pNewThemeArg || comphelper::LibreOfficeKit::isActive()
+ || aEditableConfig.GetCurrentSchemeName() != sSchemeName)
+ {
+ aEditableConfig.LoadScheme(sSchemeName);
+ }
+
+ Invalidate(FN_CHANGE_THEME);
break;
}
case FN_INVERT_BACKGROUND:
@@ -1222,6 +1259,14 @@ void SfxApplication::MiscState_Impl(SfxItemSet &rSet)
break;
#endif
+ case FN_CHANGE_THEME:
+ {
+ const bool bIsDarkMode
+ = MiscSettings::GetAppColorMode() == 2
+ || (!MiscSettings::GetAppColorMode() && MiscSettings::GetUseDarkMode());
+ rSet.Put(SfxBoolItem(FN_CHANGE_THEME, bIsDarkMode));
+ break;
+ }
case SID_HELPTIPS:
{
rSet.Put( SfxBoolItem( SID_HELPTIPS, Help::IsQuickHelpEnabled() ) );
diff --git a/sw/uiconfig/swriter/ui/notebookbar.ui b/sw/uiconfig/swriter/ui/notebookbar.ui
index b6a99ef1a79b..60581d7f0442 100644
--- a/sw/uiconfig/swriter/ui/notebookbar.ui
+++ b/sw/uiconfig/swriter/ui/notebookbar.ui
@@ -9074,6 +9074,60 @@
</packing>
</child>
<child>
+ <object class="VclOptionalBox" id="View-Section-DarkMode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <child>
+ <object class="GtkSeparator" id="separator-section-darkmode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">5</property>
+ <property name="margin_bottom">5</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="sfxlo-NotebookbarToolBox" id="Section-darkmode">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <property name="toolbar_style">both</property>
+ <property name="show_arrow">False</property>
+ <property name="icon_size">3</property>
+ <child>
+ <object class="GtkToolButton" id="View-DarkMode">
+ <property name="visible">False</property>
+ <property name="action_name">.uno:ChangeTheme</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
<object class="VclOptionalBox" id="View-Section-Zoom">
<property name="visible">True</property>
<property name="can_focus">False</property>