[gedit] app: Avoid connecting to any "notify" signal for theme changes



commit 1188740c7162e30cdc3e842fa9f20b5cdc454629
Author: Kalev Lember <kalevlember gmail com>
Date:   Tue Mar 10 13:27:11 2015 +0100

    app: Avoid connecting to any "notify" signal for theme changes
    
    Instead, connect to notify::gtk-theme-name.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=745963

 gedit/gedit-app.c |   55 +++++++++++++++++++++++++---------------------------
 1 files changed, 26 insertions(+), 29 deletions(-)
---
diff --git a/gedit/gedit-app.c b/gedit/gedit-app.c
index fb13961..28cfaf2 100644
--- a/gedit/gedit-app.c
+++ b/gedit/gedit-app.c
@@ -408,40 +408,36 @@ theme_changed (GtkSettings *settings,
               gpointer     data)
 {
        static GtkCssProvider *provider;
+       gchar *theme;
+       GdkScreen *screen;
 
-       if (pspec == NULL || g_str_equal (pspec->name, "gtk-theme-name"))
-       {
-               gchar *theme;
-               GdkScreen *screen;
-
-               g_object_get (settings, "gtk-theme-name", &theme, NULL);
-               screen = gdk_screen_get_default ();
+       g_object_get (settings, "gtk-theme-name", &theme, NULL);
+       screen = gdk_screen_get_default ();
 
-               if (g_str_equal (theme, "Adwaita"))
+       if (g_str_equal (theme, "Adwaita"))
+       {
+               if (provider == NULL)
                {
-                       if (provider == NULL)
-                       {
-                               GFile *file;
+                       GFile *file;
 
-                               provider = gtk_css_provider_new ();
-                               file = g_file_new_for_uri 
("resource:///org/gnome/gedit/css/gedit.adwaita.css");
-                               gtk_css_provider_load_from_file (provider, file, NULL);
-                               g_object_unref (file);
-                       }
-
-                       gtk_style_context_add_provider_for_screen (screen,
-                                                                  GTK_STYLE_PROVIDER (provider),
-                                                                  GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
-               }
-               else if (provider != NULL)
-               {
-                       gtk_style_context_remove_provider_for_screen (screen,
-                                                                     GTK_STYLE_PROVIDER (provider));
-                       g_clear_object (&provider);
+                       provider = gtk_css_provider_new ();
+                       file = g_file_new_for_uri ("resource:///org/gnome/gedit/css/gedit.adwaita.css");
+                       gtk_css_provider_load_from_file (provider, file, NULL);
+                       g_object_unref (file);
                }
 
-               g_free (theme);
+               gtk_style_context_add_provider_for_screen (screen,
+                                                          GTK_STYLE_PROVIDER (provider),
+                                                          GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
        }
+       else if (provider != NULL)
+       {
+               gtk_style_context_remove_provider_for_screen (screen,
+                                                             GTK_STYLE_PROVIDER (provider));
+               g_clear_object (&provider);
+       }
+
+       g_free (theme);
 }
 
 static void
@@ -450,7 +446,8 @@ setup_theme_extensions (void)
        GtkSettings *settings;
 
        settings = gtk_settings_get_default ();
-       g_signal_connect (settings, "notify", G_CALLBACK (theme_changed), NULL);
+       g_signal_connect (settings, "notify::gtk-theme-name",
+                         G_CALLBACK (theme_changed), NULL);
        theme_changed (settings, NULL, NULL);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]