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:
parent
120eb2f59e
commit
4f6e897b58
2 changed files with 41 additions and 45 deletions
|
@ -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 *
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue