diff --git a/src/inkscape.cpp b/src/inkscape.cpp index 38513d37abbbc82dc8bfc481e690fccd44fcaf99..d1ce1a1db6a533c6cc8b414636520959fb2195f8 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -378,14 +378,10 @@ void Application::add_gtk_css() gchar *gtkThemeName = nullptr; gchar *gtkIconThemeName = nullptr; Glib::ustring themeiconname; - gboolean gtkApplicationPreferDarkTheme; GtkSettings *settings = gtk_settings_get_default(); if (settings) { g_object_get(settings, "gtk-icon-theme-name", >kIconThemeName, NULL); g_object_get(settings, "gtk-theme-name", >kThemeName, NULL); - g_object_get(settings, "gtk-application-prefer-dark-theme", >kApplicationPreferDarkTheme, NULL); - g_object_set(settings, "gtk-application-prefer-dark-theme", - prefs->getBool("/theme/preferDarkTheme", gtkApplicationPreferDarkTheme), NULL); prefs->setString("/theme/defaultTheme", Glib::ustring(gtkThemeName)); prefs->setString("/theme/defaultIconTheme", Glib::ustring(gtkIconThemeName)); Glib::ustring gtkthemename = prefs->getString("/theme/gtkTheme"); diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index ea3ed60510684387add85949bf85cd90d2b05e3a..921f8bef42cab5b8d11a898b5b53636d4a590b5f 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -776,18 +776,16 @@ void InkscapePreferences::themeChange() Gtk::Window *window = SP_ACTIVE_DESKTOP->getToplevel(); if (window) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - bool darktheme = prefs->getBool("/theme/preferDarkTheme", false); Glib::ustring themename = prefs->getString("/theme/gtkTheme"); Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); GtkSettings *settings = gtk_settings_get_default(); g_object_set(settings, "gtk-theme-name", themename.c_str(), NULL); - g_object_set(settings, "gtk-application-prefer-dark-theme", darktheme, NULL); - bool dark = darktheme || themename.find(":dark") != -1; + bool dark = themename.find(":dark") != -1; if (!dark) { Glib::RefPtr 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) { + if (background_set && (0.299 * rgba.get_red() + 0.587 * rgba.get_green() + 0.114 * rgba.get_blue()) < 0.5) { dark = true; } } @@ -1121,9 +1119,6 @@ void InkscapePreferences::initPageUI() } _sys_user_themes_dir_copy.init(g_build_filename(g_get_user_data_dir(), "themes", NULL), _("Open themes folder")); _page_theme.add_line(true, _("User themes:"), _sys_user_themes_dir_copy, "", _("Location of the user’s themes"), true, Gtk::manage(new Gtk::Box())); - _dark_theme.init(_("Use dark theme"), "/theme/preferDarkTheme", false); - _page_theme.add_line(true, "", _dark_theme, "", _("Use dark theme"), true); - _dark_theme.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::themeChange)); // Icons _page_theme.add_group_header(_("Icons")); { diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h index 301d884657a497bfb81dce9ec4a3535cbde1173e..eca71bb43c010c07b02fef9ea24640a3cfad3dcb 100644 --- a/src/ui/dialog/inkscape-preferences.h +++ b/src/ui/dialog/inkscape-preferences.h @@ -239,7 +239,6 @@ protected: UI::Widget::PrefOpenFolder _sys_user_themes_dir_copy; UI::Widget::PrefOpenFolder _sys_user_icons_dir_copy; UI::Widget::PrefCombo _icon_theme; - UI::Widget::PrefCheckButton _dark_theme; UI::Widget::PrefCheckButton _symbolic_icons; UI::Widget::PrefCheckButton _symbolic_base_colors; UI::Widget::PrefColorPicker _symbolic_base_color; diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 51fb1d94b001cb99d7bac0e04cd1c6e2ae56538c..f85b722be152e8227578ee929cfd8b3860daab9b 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -843,18 +843,16 @@ void SPDesktopWidget::on_realize() dtw->updateNamedview(); gchar *gtkThemeName; - gboolean gtkApplicationPreferDarkTheme; GtkSettings *settings = gtk_settings_get_default(); Gtk::Container *window = get_toplevel(); 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; + bool dark = Glib::ustring(gtkThemeName).find(":dark") != std::string::npos; if (!dark) { Glib::RefPtr 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) { + if (background_set && (0.299 * rgba.get_red() + 0.587 * rgba.get_green() + 0.114 * rgba.get_blue()) < 0.5) { dark = true; } }