From 1510f78c78d8c059fba5caf2230afb4f20464ff9 Mon Sep 17 00:00:00 2001 From: Jabiertxof Date: Thu, 23 Jan 2020 20:12:48 +0100 Subject: [PATCH 1/2] Improbe dark theme detection --- src/ui/dialog/inkscape-preferences.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index ea3ed60510..c534f49362 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -782,12 +782,12 @@ void InkscapePreferences::themeChange() 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 = darktheme || themename.find(":dark") != std::string::endpos; 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 && rgba.get_red() + rgba.get_green() + rgba.get_blue() < 1.5) { dark = true; } } -- GitLab From 37a6c6ac9fa0cce880efc92f13866c64be5652df Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Mon, 30 Mar 2020 13:52:41 +0000 Subject: [PATCH 2/2] Try to fast fix themes --- src/ui/dialog/inkscape-preferences.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index c534f49362..6ad519523a 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -666,11 +666,6 @@ void InkscapePreferences::resetIconsColors(bool themechange) } // This colors are setted on style.css of inkscape Gdk::RGBA base_color = _symbolic_base_color.get_style_context()->get_color(); - // This is a hack to fix a proble style is not updated enoght fast on - // chage from dark to bright themes - if (themechange) { - base_color = _symbolic_base_color.get_style_context()->get_background_color(); - } Gdk::RGBA success_color = _symbolic_success_color.get_style_context()->get_color(); Gdk::RGBA warning_color = _symbolic_warning_color.get_style_context()->get_color(); Gdk::RGBA error_color = _symbolic_error_color.get_style_context()->get_color(); @@ -698,7 +693,6 @@ void InkscapePreferences::resetIconsColors(bool themechange) _symbolic_error_color.setSensitive(false); /* _complementary_colors->get_style_context()->add_class("disabled"); */ } - changeIconsColors(); } else { _symbolic_base_color.setSensitive(true); _symbolic_success_color.setSensitive(true); @@ -706,6 +700,7 @@ void InkscapePreferences::resetIconsColors(bool themechange) _symbolic_error_color.setSensitive(true); /* _complementary_colors->get_style_context()->remove_class("disabled"); */ } + changeIconsColors(); } void InkscapePreferences::resetIconsColorsWrapper() { resetIconsColors(false); } @@ -787,7 +782,7 @@ void InkscapePreferences::themeChange() 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.5) { + if (background_set && (0.299 * rgba.get_red() + 0.587 * rgba.get_green() + 0.1140.07 * rgba.get_blue() < 0.5)) { dark = true; } } -- GitLab