summaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/dialog.cpp
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2019-06-23 17:15:35 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-06-23 17:15:53 +0000
commite82a32013c7837f830b11637182ce3da8a097372 (patch)
tree3be83a1533bb0d22ca4c6ef1d89aa636fedf2d00 /src/ui/dialog/dialog.cpp
parentUpdate macOS build pipeline (diff)
downloadinkscape-e82a32013c7837f830b11637182ce3da8a097372.tar.gz
inkscape-e82a32013c7837f830b11637182ce3da8a097372.zip
Remove experimental code to work in MR and fixes for selectors
Diffstat (limited to 'src/ui/dialog/dialog.cpp')
-rw-r--r--src/ui/dialog/dialog.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/ui/dialog/dialog.cpp b/src/ui/dialog/dialog.cpp
index 2ba2856ff..3baec5106 100644
--- a/src/ui/dialog/dialog.cpp
+++ b/src/ui/dialog/dialog.cpp
@@ -74,11 +74,13 @@ Dialog::Dialog(Behavior::BehaviorFactory behavior_factory, const char *prefs_pat
INKSCAPE.signal_dialogs_hide.connect(sigc::mem_fun(*this, &Dialog::onHideF12));
INKSCAPE.signal_dialogs_unhide.connect(sigc::mem_fun(*this, &Dialog::onShowF12));
INKSCAPE.signal_shut_down.connect(sigc::mem_fun(*this, &Dialog::onShutdown));
+ INKSCAPE.signal_change_theme.connect(sigc::mem_fun(*this, &Dialog::addTopWindowClasses));
Glib::wrap(gobj())->signal_event().connect(sigc::mem_fun(*this, &Dialog::_onEvent));
Glib::wrap(gobj())->signal_key_press_event().connect(sigc::mem_fun(*this, &Dialog::_onKeyPress));
read_geometry();
+ addTopWindowClasses();
}
Dialog::~Dialog()
@@ -308,6 +310,31 @@ Dialog::_getSelection()
return SP_ACTIVE_DESKTOP->getSelection();
}
+void Dialog::addTopWindowClasses()
+{
+ SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ if (desktop) {
+ Gtk::Widget *canvas = Glib::wrap(GTK_WIDGET(desktop->canvas));
+ Gtk::Window *toplevel_window = dynamic_cast<Gtk::Window *>(canvas->get_toplevel());
+ if (toplevel_window) {
+ if (toplevel_window->get_style_context()->has_class("dark")) {
+ Glib::wrap(gobj())->get_style_context()->add_class("dark");
+ Glib::wrap(gobj())->get_style_context()->remove_class("bright");
+ } else {
+ Glib::wrap(gobj())->get_style_context()->add_class("bright");
+ Glib::wrap(gobj())->get_style_context()->remove_class("dark");
+ }
+ if (toplevel_window->get_style_context()->has_class("symbolic")) {
+ Glib::wrap(gobj())->get_style_context()->add_class("symbolic");
+ Glib::wrap(gobj())->get_style_context()->remove_class("regular");
+ } else {
+ Glib::wrap(gobj())->get_style_context()->remove_class("symbolic");
+ Glib::wrap(gobj())->get_style_context()->add_class("regular");
+ }
+ }
+ }
+}
+
} // namespace Dialog
} // namespace UI
} // namespace Inkscape