summaryrefslogtreecommitdiffstats
path: root/src/widgets/desktop-widget.cpp
diff options
context:
space:
mode:
authorAlexander Valavanis <valavanisalex@gmail.com>2019-01-27 10:43:05 +0000
committerAlexander Valavanis <valavanisalex@gmail.com>2019-01-27 10:43:05 +0000
commitc4a6cf08d98d1b1239aefbb5a8b05f7c3f9294bf (patch)
treed3532f1b95025706cebb81e0e354002a405dd834 /src/widgets/desktop-widget.cpp
parenttoolbox - add comment (diff)
parentFinich CSS refactor (diff)
downloadinkscape-c4a6cf08d98d1b1239aefbb5a8b05f7c3f9294bf.tar.gz
inkscape-c4a6cf08d98d1b1239aefbb5a8b05f7c3f9294bf.zip
Merge branch 'master' of gitlab.com:inkscape/inkscape
Diffstat (limited to 'src/widgets/desktop-widget.cpp')
-rw-r--r--src/widgets/desktop-widget.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index b7b9d2ce0..9db8b2af4 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -693,7 +693,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
}
overallTimer = nullptr;
}
-
// Ensure that ruler ranges are updated correctly whenever the canvas table
// is resized
dtw->_canvas_tbl_size_allocate_connection = dtw->_canvas_tbl->signal_size_allocate().connect(sigc::mem_fun(dtw, &SPDesktopWidget::canvas_tbl_size_allocate));
@@ -890,6 +889,30 @@ sp_desktop_widget_realize (GtkWidget *widget)
dtw->desktop->set_display_area (d, 10);
dtw->updateNamedview();
+ gchar *gtkThemeName;
+ gboolean gtkApplicationPreferDarkTheme;
+ GtkSettings *settings = gtk_settings_get_default();
+ Gtk::Window *window = SP_ACTIVE_DESKTOP->getToplevel();
+ if (settings && window) {
+ g_object_get(settings, "gtk-theme-name", &gtkThemeName, NULL);
+ g_object_get(settings, "gtk-application-prefer-dark-theme", &gtkApplicationPreferDarkTheme, NULL);
+ bool dark = gtkApplicationPreferDarkTheme || Glib::ustring(gtkThemeName).find(":dark") != -1;
+ if (!dark) {
+ Glib::RefPtr<Gtk::StyleContext> stylecontext = window->get_style_context();
+ Gdk::RGBA rgba;
+ bool background_set = stylecontext->lookup_color("theme_bg_color", rgba);
+ if (background_set && rgba.get_red() + rgba.get_green() + rgba.get_blue() < 1.0) {
+ dark = true;
+ }
+ }
+ if (dark) {
+ window->get_style_context()->add_class("dark");
+ window->get_style_context()->remove_class("bright");
+ } else {
+ window->get_style_context()->add_class("bright");
+ window->get_style_context()->remove_class("dark");
+ }
+ }
}
/* This is just to provide access to common functionality from sp_desktop_widget_realize() above