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.
This commit is contained in:
Robert Ancell 2018-10-09 09:40:50 +13:00 committed by Georges Basile Stavracas Neto
parent 120eb2f59e
commit 4f6e897b58
2 changed files with 41 additions and 45 deletions

View file

@ -417,9 +417,8 @@ show_more (CcFormatChooser *chooser)
} }
static void static void
row_activated (GtkListBox *box, row_activated (CcFormatChooser *chooser,
GtkListBoxRow *row, GtkListBoxRow *row)
CcFormatChooser *chooser)
{ {
const gchar *new_locale_id; const gchar *new_locale_id;
@ -444,13 +443,12 @@ row_activated (GtkListBox *box,
} }
static void static void
activate_default (GtkWindow *window, activate_default (CcFormatChooser *chooser)
CcFormatChooser *chooser)
{ {
GtkWidget *focus; GtkWidget *focus;
const gchar *locale_id; const gchar *locale_id;
focus = gtk_window_get_focus (window); focus = gtk_window_get_focus (GTK_WINDOW (chooser));
if (!focus) if (!focus)
return; return;
@ -458,7 +456,7 @@ activate_default (GtkWindow *window,
if (g_strcmp0 (locale_id, chooser->region) == 0) if (g_strcmp0 (locale_id, chooser->region) == 0)
return; return;
g_signal_stop_emission_by_name (window, "activate-default"); g_signal_stop_emission_by_name (chooser, "activate-default");
gtk_widget_activate (focus); gtk_widget_activate (focus);
} }
@ -517,16 +515,16 @@ cc_format_chooser_init (CcFormatChooser *chooser)
add_all_regions (chooser); add_all_regions (chooser);
g_signal_connect_swapped (chooser->region_filter_entry, "search-changed", g_signal_connect_object (chooser->region_filter_entry, "search-changed",
G_CALLBACK (filter_changed), chooser); G_CALLBACK (filter_changed), chooser, G_CONNECT_SWAPPED);
g_signal_connect (chooser->region_listbox, "row-activated", g_signal_connect_object (chooser->region_listbox, "row-activated",
G_CALLBACK (row_activated), chooser); G_CALLBACK (row_activated), chooser, G_CONNECT_SWAPPED);
gtk_list_box_invalidate_filter (GTK_LIST_BOX (chooser->region_listbox)); gtk_list_box_invalidate_filter (GTK_LIST_BOX (chooser->region_listbox));
g_signal_connect (chooser, "activate-default", g_signal_connect_object (chooser, "activate-default",
G_CALLBACK (activate_default), chooser); G_CALLBACK (activate_default), chooser, G_CONNECT_SWAPPED);
} }
CcFormatChooser * CcFormatChooser *

View file

@ -376,9 +376,9 @@ update_language (CcRegionPanel *self,
} }
static void static void
language_response (CcLanguageChooser *chooser, language_response (CcRegionPanel *self,
gint response_id, gint response_id,
CcRegionPanel *self) CcLanguageChooser *chooser)
{ {
const gchar *language; const gchar *language;
@ -420,9 +420,9 @@ update_region (CcRegionPanel *self,
} }
static void static void
format_response (CcFormatChooser *chooser, format_response (CcRegionPanel *self,
gint response_id, gint response_id,
CcRegionPanel *self) CcFormatChooser *chooser)
{ {
const gchar *region; const gchar *region;
@ -451,8 +451,8 @@ show_language_chooser (CcRegionPanel *self)
chooser = cc_language_chooser_new (); chooser = cc_language_chooser_new ();
gtk_window_set_transient_for (GTK_WINDOW (chooser), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self)))); 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)); cc_language_chooser_set_language (chooser, get_effective_language (self));
g_signal_connect (chooser, "response", g_signal_connect_object (chooser, "response",
G_CALLBACK (language_response), self); G_CALLBACK (language_response), self, G_CONNECT_SWAPPED);
gtk_window_present (GTK_WINDOW (chooser)); gtk_window_present (GTK_WINDOW (chooser));
} }
@ -483,8 +483,8 @@ show_region_chooser (CcRegionPanel *self)
chooser = cc_format_chooser_new (); chooser = cc_format_chooser_new ();
gtk_window_set_transient_for (GTK_WINDOW (chooser), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self)))); 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)); cc_format_chooser_set_region (chooser, get_effective_region (self));
g_signal_connect (chooser, "response", g_signal_connect_object (chooser, "response",
G_CALLBACK (format_response), self); G_CALLBACK (format_response), self, G_CONNECT_SWAPPED);
gtk_window_present (GTK_WINDOW (chooser)); gtk_window_present (GTK_WINDOW (chooser));
} }
@ -606,22 +606,22 @@ static void
setup_language_section (CcRegionPanel *self) setup_language_section (CcRegionPanel *self)
{ {
self->user = act_user_manager_get_user_by_id (self->user_manager, getuid ()); self->user = act_user_manager_get_user_by_id (self->user_manager, getuid ());
g_signal_connect_swapped (self->user, "notify::language", g_signal_connect_object (self->user, "notify::language",
G_CALLBACK (update_language_from_user), self); G_CALLBACK (update_language_from_user), self, G_CONNECT_SWAPPED);
g_signal_connect_swapped (self->user, "notify::is-loaded", g_signal_connect_object (self->user, "notify::is-loaded",
G_CALLBACK (update_language_from_user), self); G_CALLBACK (update_language_from_user), self, G_CONNECT_SWAPPED);
self->locale_settings = g_settings_new (GNOME_SYSTEM_LOCALE_DIR); self->locale_settings = g_settings_new (GNOME_SYSTEM_LOCALE_DIR);
g_signal_connect_swapped (self->locale_settings, "changed::" KEY_REGION, g_signal_connect_object (self->locale_settings, "changed::" KEY_REGION,
G_CALLBACK (update_region_from_setting), self); G_CALLBACK (update_region_from_setting), self, G_CONNECT_SWAPPED);
gtk_list_box_set_selection_mode (self->language_list, gtk_list_box_set_selection_mode (self->language_list,
GTK_SELECTION_NONE); GTK_SELECTION_NONE);
gtk_list_box_set_header_func (self->language_list, gtk_list_box_set_header_func (self->language_list,
cc_list_box_update_header_func, cc_list_box_update_header_func,
NULL, NULL); NULL, NULL);
g_signal_connect_swapped (self->language_list, "row-activated", g_signal_connect_object (self->language_list, "row-activated",
G_CALLBACK (activate_language_row), self); G_CALLBACK (activate_language_row), self, G_CONNECT_SWAPPED);
update_language_from_user (self); update_language_from_user (self);
update_region_from_setting (self); update_region_from_setting (self);
@ -812,9 +812,8 @@ get_row_by_source (CcRegionPanel *self, CcInputSource *source)
} }
static void static void
input_sources_changed (GSettings *settings, input_sources_changed (CcRegionPanel *self,
const gchar *key, const gchar *key)
CcRegionPanel *self)
{ {
CcInputRow *selected; CcInputRow *selected;
g_autoptr(CcInputSource) source = NULL; g_autoptr(CcInputSource) source = NULL;
@ -1257,8 +1256,8 @@ setup_input_section (CcRegionPanel *self)
g_signal_connect_object (self->input_list, "row-selected", g_signal_connect_object (self->input_list, "row-selected",
G_CALLBACK (update_buttons), self, G_CONNECT_SWAPPED); G_CALLBACK (update_buttons), self, G_CONNECT_SWAPPED);
g_signal_connect (self->input_settings, "changed::" KEY_INPUT_SOURCES, g_signal_connect_object (self->input_settings, "changed::" KEY_INPUT_SOURCES,
G_CALLBACK (input_sources_changed), self); G_CALLBACK (input_sources_changed), self, G_CONNECT_SWAPPED);
add_input_sources_from_settings (self); add_input_sources_from_settings (self);
update_buttons (self); update_buttons (self);
@ -1282,14 +1281,13 @@ setup_input_section (CcRegionPanel *self)
} }
static void static void
on_localed_properties_changed (GDBusProxy *proxy, on_localed_properties_changed (CcRegionPanel *self,
GVariant *changed_properties, GVariant *changed_properties,
const gchar **invalidated_properties, const gchar **invalidated_properties)
CcRegionPanel *self)
{ {
g_autoptr(GVariant) v = NULL; 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) { if (v) {
g_autofree const gchar **strv = NULL; g_autofree const gchar **strv = NULL;
gsize len; gsize len;
@ -1463,9 +1461,9 @@ localed_proxy_ready (GObject *source,
gtk_widget_set_sensitive (GTK_WIDGET (self->login_button), TRUE); gtk_widget_set_sensitive (GTK_WIDGET (self->login_button), TRUE);
g_signal_connect (self->localed, "g-properties-changed", g_signal_connect_object (self->localed, "g-properties-changed",
G_CALLBACK (on_localed_properties_changed), self); G_CALLBACK (on_localed_properties_changed), self, G_CONNECT_SWAPPED);
on_localed_properties_changed (self->localed, NULL, NULL, self); on_localed_properties_changed (self, NULL, NULL);
} }
static void 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_valign (GTK_WIDGET (self->login_button), GTK_ALIGN_CENTER);
gtk_widget_set_visible (GTK_WIDGET (self->login_button), FALSE); gtk_widget_set_visible (GTK_WIDGET (self->login_button), FALSE);
gtk_widget_set_sensitive (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_signal_connect_object (self->login_button, "notify::active",
G_CALLBACK (login_changed), self); G_CALLBACK (login_changed), self, G_CONNECT_SWAPPED);
g_object_get (self->user_manager, "is-loaded", &loaded, NULL); g_object_get (self->user_manager, "is-loaded", &loaded, NULL);
if (loaded) if (loaded)
set_login_button_visibility (self); set_login_button_visibility (self);
else else
g_signal_connect_swapped (self->user_manager, "notify::is-loaded", g_signal_connect_object (self->user_manager, "notify::is-loaded",
G_CALLBACK (set_login_button_visibility), self); G_CALLBACK (set_login_button_visibility), self, G_CONNECT_SWAPPED);
} }
static void static void