diff options
| author | Alexander Valavanis <valavanisalex@gmail.com> | 2019-01-27 10:43:05 +0000 |
|---|---|---|
| committer | Alexander Valavanis <valavanisalex@gmail.com> | 2019-01-27 10:43:05 +0000 |
| commit | c4a6cf08d98d1b1239aefbb5a8b05f7c3f9294bf (patch) | |
| tree | d3532f1b95025706cebb81e0e354002a405dd834 /src/widgets/desktop-widget.cpp | |
| parent | toolbox - add comment (diff) | |
| parent | Finich CSS refactor (diff) | |
| download | inkscape-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.cpp | 25 |
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", >kThemeName, NULL); + g_object_get(settings, "gtk-application-prefer-dark-theme", >kApplicationPreferDarkTheme, 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 |
