commit 812b6f7d69e691a04ba22477d4e443d3fb4f8757
Author: Juergen Spitzmueller <[email protected]>
Date:   Thu Mar 4 12:35:38 2021 +0100

    Allow for runtime (dark/light) mode switch
---
 src/frontends/qt/GuiToolbar.cpp |    8 ++++++++
 src/frontends/qt/GuiToolbar.h   |    3 +++
 src/frontends/qt/GuiView.cpp    |   13 +++++++++++++
 src/frontends/qt/GuiView.h      |    2 ++
 4 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/src/frontends/qt/GuiToolbar.cpp b/src/frontends/qt/GuiToolbar.cpp
index 5600f4a..8057d84 100644
--- a/src/frontends/qt/GuiToolbar.cpp
+++ b/src/frontends/qt/GuiToolbar.cpp
@@ -116,6 +116,14 @@ void GuiToolbar::fill()
 }
 
 
+void GuiToolbar::refill()
+{
+       filled_ = false;
+       clear();
+       fill();
+}
+
+
 void GuiToolbar::showEvent(QShowEvent * ev)
 {
        fill();
diff --git a/src/frontends/qt/GuiToolbar.h b/src/frontends/qt/GuiToolbar.h
index 262b09e..d658f3f 100644
--- a/src/frontends/qt/GuiToolbar.h
+++ b/src/frontends/qt/GuiToolbar.h
@@ -152,6 +152,9 @@ public:
        ///
        void toggle();
 
+       ///
+       void refill();
+
        /// toggles movability
        void movable(bool silent = false);
 
diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index a48540d..c226968 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -1470,6 +1470,12 @@ bool GuiView::event(QEvent * e)
                return QMainWindow::event(e);
        }
 
+       case QEvent::ApplicationPaletteChange: {
+               // runtime switch from/to dark mode
+               refillToolbars();
+               return QMainWindow::event(e);
+       }
+
        default:
                return QMainWindow::event(e);
        }
@@ -1739,6 +1745,13 @@ void GuiView::updateToolbars()
 }
 
 
+void GuiView::refillToolbars()
+{
+       for (auto const & tb_p : d.toolbars_)
+               tb_p.second->refill();
+}
+
+
 void GuiView::setBuffer(Buffer * newBuffer, bool switch_to)
 {
        LYXERR(Debug::DEBUG, "Setting buffer: " << newBuffer << endl);
diff --git a/src/frontends/qt/GuiView.h b/src/frontends/qt/GuiView.h
index 4c610e0..f5024e5 100644
--- a/src/frontends/qt/GuiView.h
+++ b/src/frontends/qt/GuiView.h
@@ -149,6 +149,8 @@ public:
        /// updates the possible layouts selectable
        void updateLayoutList();
        void updateToolbars();
+       /// refill the toolbars (dark mode switch)
+       void refillToolbars();
 
        ///
        LayoutBox * getLayoutDialog() const;
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to