[gnome-control-center] region: Use g_signal_connect_object for all signal handlers



commit 4f6e897b58f098ec2edb2d79d58a8bd5814a7f9b
Author: Robert Ancell <robert ancell canonical com>
Date:   Tue Oct 9 09:40:50 2018 +1300

    region: Use g_signal_connect_object for all signal handlers
    
    This ensures they wont be called when the handling object is destroyed.
    Also connect all in "swapped" form for improved readability.

 panels/region/cc-format-chooser.c | 24 +++++++--------
 panels/region/cc-region-panel.c   | 62 +++++++++++++++++++--------------------
 2 files changed, 41 insertions(+), 45 deletions(-)
---
diff --git a/panels/region/cc-format-chooser.c b/panels/region/cc-format-chooser.c
index 6b10bec6a..56ba6e16d 100644
--- a/panels/region/cc-format-chooser.c
+++ b/panels/region/cc-format-chooser.c
@@ -417,9 +417,8 @@ show_more (CcFormatChooser *chooser)
 }
 
 static void
-row_activated (GtkListBox      *box,
-               GtkListBoxRow   *row,
-               CcFormatChooser *chooser)
+row_activated (CcFormatChooser *chooser,
+               GtkListBoxRow   *row)
 {
         const gchar *new_locale_id;
 
@@ -444,13 +443,12 @@ row_activated (GtkListBox      *box,
 }
 
 static void
-activate_default (GtkWindow       *window,
-                  CcFormatChooser *chooser)
+activate_default (CcFormatChooser *chooser)
 {
         GtkWidget *focus;
         const gchar *locale_id;
 
-        focus = gtk_window_get_focus (window);
+        focus = gtk_window_get_focus (GTK_WINDOW (chooser));
         if (!focus)
                 return;
 
@@ -458,7 +456,7 @@ activate_default (GtkWindow       *window,
         if (g_strcmp0 (locale_id, chooser->region) == 0)
                 return;
 
-        g_signal_stop_emission_by_name (window, "activate-default");
+        g_signal_stop_emission_by_name (chooser, "activate-default");
         gtk_widget_activate (focus);
 }
 
@@ -517,16 +515,16 @@ cc_format_chooser_init (CcFormatChooser *chooser)
 
         add_all_regions (chooser);
 
-        g_signal_connect_swapped (chooser->region_filter_entry, "search-changed",
-                                  G_CALLBACK (filter_changed), chooser);
+        g_signal_connect_object (chooser->region_filter_entry, "search-changed",
+                                 G_CALLBACK (filter_changed), chooser, G_CONNECT_SWAPPED);
 
-        g_signal_connect (chooser->region_listbox, "row-activated",
-                          G_CALLBACK (row_activated), chooser);
+        g_signal_connect_object (chooser->region_listbox, "row-activated",
+                                 G_CALLBACK (row_activated), chooser, G_CONNECT_SWAPPED);
 
         gtk_list_box_invalidate_filter (GTK_LIST_BOX (chooser->region_listbox));
 
-        g_signal_connect (chooser, "activate-default",
-                          G_CALLBACK (activate_default), chooser);
+        g_signal_connect_object (chooser, "activate-default",
+                                 G_CALLBACK (activate_default), chooser, G_CONNECT_SWAPPED);
 }
 
 CcFormatChooser *
diff --git a/panels/region/cc-region-panel.c b/panels/region/cc-region-panel.c
index 5c9cb50fd..c98bb3eb0 100644
--- a/panels/region/cc-region-panel.c
+++ b/panels/region/cc-region-panel.c
@@ -376,9 +376,9 @@ update_language (CcRegionPanel *self,
 }
 
 static void
-language_response (CcLanguageChooser *chooser,
+language_response (CcRegionPanel     *self,
                    gint               response_id,
-                   CcRegionPanel     *self)
+                   CcLanguageChooser *chooser)
 {
         const gchar *language;
 
@@ -420,9 +420,9 @@ update_region (CcRegionPanel *self,
 }
 
 static void
-format_response (CcFormatChooser *chooser,
+format_response (CcRegionPanel   *self,
                  gint             response_id,
-                 CcRegionPanel   *self)
+                 CcFormatChooser *chooser)
 {
         const gchar *region;
 
@@ -451,8 +451,8 @@ show_language_chooser (CcRegionPanel *self)
         chooser = cc_language_chooser_new ();
         gtk_window_set_transient_for (GTK_WINDOW (chooser), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET 
(self))));
         cc_language_chooser_set_language (chooser, get_effective_language (self));
-        g_signal_connect (chooser, "response",
-                          G_CALLBACK (language_response), self);
+        g_signal_connect_object (chooser, "response",
+                                 G_CALLBACK (language_response), self, G_CONNECT_SWAPPED);
         gtk_window_present (GTK_WINDOW (chooser));
 }
 
@@ -483,8 +483,8 @@ show_region_chooser (CcRegionPanel *self)
         chooser = cc_format_chooser_new ();
         gtk_window_set_transient_for (GTK_WINDOW (chooser), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET 
(self))));
         cc_format_chooser_set_region (chooser, get_effective_region (self));
-        g_signal_connect (chooser, "response",
-                          G_CALLBACK (format_response), self);
+        g_signal_connect_object (chooser, "response",
+                                 G_CALLBACK (format_response), self, G_CONNECT_SWAPPED);
         gtk_window_present (GTK_WINDOW (chooser));
 }
 
@@ -606,22 +606,22 @@ static void
 setup_language_section (CcRegionPanel *self)
 {
         self->user = act_user_manager_get_user_by_id (self->user_manager, getuid ());
-        g_signal_connect_swapped (self->user, "notify::language",
-                                  G_CALLBACK (update_language_from_user), self);
-        g_signal_connect_swapped (self->user, "notify::is-loaded",
-                                  G_CALLBACK (update_language_from_user), self);
+        g_signal_connect_object (self->user, "notify::language",
+                                 G_CALLBACK (update_language_from_user), self, G_CONNECT_SWAPPED);
+        g_signal_connect_object (self->user, "notify::is-loaded",
+                                 G_CALLBACK (update_language_from_user), self, G_CONNECT_SWAPPED);
 
         self->locale_settings = g_settings_new (GNOME_SYSTEM_LOCALE_DIR);
-        g_signal_connect_swapped (self->locale_settings, "changed::" KEY_REGION,
-                                  G_CALLBACK (update_region_from_setting), self);
+        g_signal_connect_object (self->locale_settings, "changed::" KEY_REGION,
+                                 G_CALLBACK (update_region_from_setting), self, G_CONNECT_SWAPPED);
 
         gtk_list_box_set_selection_mode (self->language_list,
                                          GTK_SELECTION_NONE);
         gtk_list_box_set_header_func (self->language_list,
                                       cc_list_box_update_header_func,
                                       NULL, NULL);
-        g_signal_connect_swapped (self->language_list, "row-activated",
-                                  G_CALLBACK (activate_language_row), self);
+        g_signal_connect_object (self->language_list, "row-activated",
+                                 G_CALLBACK (activate_language_row), self, G_CONNECT_SWAPPED);
 
         update_language_from_user (self);
         update_region_from_setting (self);
@@ -812,9 +812,8 @@ get_row_by_source (CcRegionPanel *self, CcInputSource *source)
 }
 
 static void
-input_sources_changed (GSettings     *settings,
-                       const gchar   *key,
-                       CcRegionPanel *self)
+input_sources_changed (CcRegionPanel *self,
+                       const gchar   *key)
 {
         CcInputRow *selected;
         g_autoptr(CcInputSource) source = NULL;
@@ -1257,8 +1256,8 @@ setup_input_section (CcRegionPanel *self)
         g_signal_connect_object (self->input_list, "row-selected",
                                  G_CALLBACK (update_buttons), self, G_CONNECT_SWAPPED);
 
-        g_signal_connect (self->input_settings, "changed::" KEY_INPUT_SOURCES,
-                          G_CALLBACK (input_sources_changed), self);
+        g_signal_connect_object (self->input_settings, "changed::" KEY_INPUT_SOURCES,
+                                 G_CALLBACK (input_sources_changed), self, G_CONNECT_SWAPPED);
 
         add_input_sources_from_settings (self);
         update_buttons (self);
@@ -1282,14 +1281,13 @@ setup_input_section (CcRegionPanel *self)
 }
 
 static void
-on_localed_properties_changed (GDBusProxy     *proxy,
+on_localed_properties_changed (CcRegionPanel  *self,
                                GVariant       *changed_properties,
-                               const gchar   **invalidated_properties,
-                               CcRegionPanel  *self)
+                               const gchar   **invalidated_properties)
 {
         g_autoptr(GVariant) v = NULL;
 
-        v = g_dbus_proxy_get_cached_property (proxy, "Locale");
+        v = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (self->localed), "Locale");
         if (v) {
                 g_autofree const gchar **strv = NULL;
                 gsize len;
@@ -1463,9 +1461,9 @@ localed_proxy_ready (GObject      *source,
 
         gtk_widget_set_sensitive (GTK_WIDGET (self->login_button), TRUE);
 
-        g_signal_connect (self->localed, "g-properties-changed",
-                          G_CALLBACK (on_localed_properties_changed), self);
-        on_localed_properties_changed (self->localed, NULL, NULL, self);
+        g_signal_connect_object (self->localed, "g-properties-changed",
+                                 G_CALLBACK (on_localed_properties_changed), self, G_CONNECT_SWAPPED);
+        on_localed_properties_changed (self, NULL, NULL);
 }
 
 static void
@@ -1542,15 +1540,15 @@ setup_login_button (CcRegionPanel *self)
         gtk_widget_set_valign (GTK_WIDGET (self->login_button), GTK_ALIGN_CENTER);
         gtk_widget_set_visible (GTK_WIDGET (self->login_button), FALSE);
         gtk_widget_set_sensitive (GTK_WIDGET (self->login_button), FALSE);
-        g_signal_connect_swapped (self->login_button, "notify::active",
-                                  G_CALLBACK (login_changed), self);
+        g_signal_connect_object (self->login_button, "notify::active",
+                                 G_CALLBACK (login_changed), self, G_CONNECT_SWAPPED);
 
         g_object_get (self->user_manager, "is-loaded", &loaded, NULL);
         if (loaded)
                 set_login_button_visibility (self);
         else
-                g_signal_connect_swapped (self->user_manager, "notify::is-loaded",
-                                          G_CALLBACK (set_login_button_visibility), self);
+                g_signal_connect_object (self->user_manager, "notify::is-loaded",
+                                         G_CALLBACK (set_login_button_visibility), self, G_CONNECT_SWAPPED);
 }
 
 static void


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