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
|
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 *
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue