power: Connect signals with g_signal_connect_object in swapped form

This commit is contained in:
Robert Ancell 2019-11-22 12:40:38 +13:00
parent c0cfbeccff
commit a6d5678dc8

View file

@ -117,6 +117,9 @@ struct _CcPowerPanel
GtkWidget *als_switch; GtkWidget *als_switch;
GtkWidget *als_row; GtkWidget *als_row;
GtkWidget *power_button_combo;
GtkWidget *idle_delay_combo;
#ifdef HAVE_NETWORK_MANAGER #ifdef HAVE_NETWORK_MANAGER
NMClient *nm_client; NMClient *nm_client;
GtkWidget *wifi_switch; GtkWidget *wifi_switch;
@ -803,9 +806,7 @@ add_device (CcPowerPanel *panel, UpDevice *device)
} }
static void static void
up_client_changed (UpClient *client, up_client_changed (CcPowerPanel *self)
UpDevice *device,
CcPowerPanel *self)
{ {
g_autoptr(GList) battery_children = NULL; g_autoptr(GList) battery_children = NULL;
g_autoptr(GList) device_children = NULL; g_autoptr(GList) device_children = NULL;
@ -974,9 +975,8 @@ up_client_changed (UpClient *client,
} }
static void static void
up_client_device_removed (UpClient *client, up_client_device_removed (CcPowerPanel *self,
const char *object_path, const char *object_path)
CcPowerPanel *self)
{ {
guint i; guint i;
@ -994,18 +994,17 @@ up_client_device_removed (UpClient *client,
} }
} }
up_client_changed (self->up_client, NULL, self); up_client_changed (self);
} }
static void static void
up_client_device_added (UpClient *client, up_client_device_added (CcPowerPanel *self,
UpDevice *device, UpDevice *device)
CcPowerPanel *self)
{ {
g_ptr_array_add (self->devices, g_object_ref (device)); g_ptr_array_add (self->devices, g_object_ref (device));
g_signal_connect (G_OBJECT (device), "notify", g_signal_connect_object (G_OBJECT (device), "notify",
G_CALLBACK (up_client_changed), self); G_CALLBACK (up_client_changed), self, G_CONNECT_SWAPPED);
up_client_changed (self->up_client, NULL, self); up_client_changed (self);
} }
static void static void
@ -1032,9 +1031,8 @@ set_brightness_cb (GObject *source_object, GAsyncResult *res, gpointer user_data
} }
static void static void
brightness_slider_value_changed_cb (GtkRange *range, gpointer user_data) brightness_slider_value_changed_cb (CcPowerPanel *self, GtkRange *range)
{ {
CcPowerPanel *self = CC_POWER_PANEL (user_data);
guint percentage; guint percentage;
g_autoptr(GVariant) variant = NULL; g_autoptr(GVariant) variant = NULL;
GDBusProxy *proxy; GDBusProxy *proxy;
@ -1076,7 +1074,7 @@ brightness_slider_value_changed_cb (GtkRange *range, gpointer user_data)
-1, -1,
cc_panel_get_cancellable (CC_PANEL (self)), cc_panel_get_cancellable (CC_PANEL (self)),
set_brightness_cb, set_brightness_cb,
user_data); self);
} }
static void static void
@ -1148,14 +1146,12 @@ sync_screen_brightness (CcPowerPanel *self)
} }
static void static void
als_switch_changed (GtkSwitch *sw, als_switch_changed (CcPowerPanel *self)
GParamSpec *pspec,
CcPowerPanel *panel)
{ {
gboolean enabled; gboolean enabled;
enabled = gtk_switch_get_active (sw); enabled = gtk_switch_get_active (GTK_SWITCH (self->als_switch));
g_debug ("Setting ALS enabled %s", enabled ? "on" : "off"); g_debug ("Setting ALS enabled %s", enabled ? "on" : "off");
g_settings_set_boolean (panel->gsd_settings, "ambient-enabled", enabled); g_settings_set_boolean (self->gsd_settings, "ambient-enabled", enabled);
} }
static void static void
@ -1188,12 +1184,8 @@ als_enabled_state_changed (CcPowerPanel *self)
} }
static void static void
on_screen_property_change (GDBusProxy *proxy, on_screen_property_change (CcPowerPanel *self)
GVariant *changed_properties,
GVariant *invalidated_properties,
gpointer user_data)
{ {
CcPowerPanel *self = CC_POWER_PANEL (user_data);
sync_screen_brightness (self); sync_screen_brightness (self);
} }
@ -1217,19 +1209,15 @@ got_screen_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_da
/* we want to change the bar if the user presses brightness buttons */ /* we want to change the bar if the user presses brightness buttons */
g_signal_connect_object (screen_proxy, "g-properties-changed", g_signal_connect_object (screen_proxy, "g-properties-changed",
G_CALLBACK (on_screen_property_change), self, 0); G_CALLBACK (on_screen_property_change), self, G_CONNECT_SWAPPED);
sync_screen_brightness (self); sync_screen_brightness (self);
als_enabled_state_changed (self); als_enabled_state_changed (self);
} }
static void static void
on_kbd_property_change (GDBusProxy *proxy, on_kbd_property_change (CcPowerPanel *self)
GVariant *changed_properties,
GVariant *invalidated_properties,
gpointer user_data)
{ {
CcPowerPanel *self = CC_POWER_PANEL (user_data);
sync_kbd_brightness (self); sync_kbd_brightness (self);
} }
@ -1253,13 +1241,13 @@ got_kbd_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
/* we want to change the bar if the user presses brightness buttons */ /* we want to change the bar if the user presses brightness buttons */
g_signal_connect_object (kbd_proxy, "g-properties-changed", g_signal_connect_object (kbd_proxy, "g-properties-changed",
G_CALLBACK (on_kbd_property_change), self, 0); G_CALLBACK (on_kbd_property_change), self, G_CONNECT_SWAPPED);
sync_kbd_brightness (self); sync_kbd_brightness (self);
} }
static void static void
combo_time_changed_cb (GtkWidget *widget, CcPowerPanel *self) combo_time_changed_cb (CcPowerPanel *self, GtkWidget *widget)
{ {
GtkTreeIter iter; GtkTreeIter iter;
GtkTreeModel *model; GtkTreeModel *model;
@ -1394,17 +1382,15 @@ bt_set_powered (CcPowerPanel *self,
} }
static void static void
bt_switch_changed (GtkSwitch *sw, bt_switch_changed (CcPowerPanel *self)
GParamSpec *pspec,
CcPowerPanel *panel)
{ {
gboolean powered; gboolean powered;
powered = gtk_switch_get_active (sw); powered = gtk_switch_get_active (GTK_SWITCH (self->bt_switch));
g_debug ("Setting bt power %s", powered ? "on" : "off"); g_debug ("Setting bt power %s", powered ? "on" : "off");
bt_set_powered (panel, powered); bt_set_powered (self, powered);
} }
static void static void
@ -1467,15 +1453,13 @@ has_wifi_devices (NMClient *client)
} }
static void static void
wifi_switch_changed (GtkSwitch *sw, wifi_switch_changed (CcPowerPanel *self)
GParamSpec *pspec,
CcPowerPanel *panel)
{ {
gboolean enabled; gboolean enabled;
enabled = gtk_switch_get_active (sw); enabled = gtk_switch_get_active (GTK_SWITCH (self->wifi_switch));
g_debug ("Setting wifi %s", enabled ? "enabled" : "disabled"); g_debug ("Setting wifi %s", enabled ? "enabled" : "disabled");
nm_client_wireless_set_enabled (panel->nm_client, enabled); nm_client_wireless_set_enabled (self->nm_client, enabled);
} }
static gboolean static gboolean
@ -1509,34 +1493,30 @@ has_mobile_devices (NMClient *client)
} }
static void static void
mobile_switch_changed (GtkSwitch *sw, mobile_switch_changed (CcPowerPanel *self)
GParamSpec *pspec,
CcPowerPanel *panel)
{ {
gboolean enabled; gboolean enabled;
enabled = gtk_switch_get_active (sw); enabled = gtk_switch_get_active (GTK_SWITCH (self->mobile_switch));
g_debug ("Setting wwan %s", enabled ? "enabled" : "disabled"); g_debug ("Setting wwan %s", enabled ? "enabled" : "disabled");
nm_client_wwan_set_enabled (panel->nm_client, enabled); nm_client_wwan_set_enabled (self->nm_client, enabled);
g_debug ("Setting wimax %s", enabled ? "enabled" : "disabled"); g_debug ("Setting wimax %s", enabled ? "enabled" : "disabled");
nm_client_wimax_set_enabled (panel->nm_client, enabled); nm_client_wimax_set_enabled (self->nm_client, enabled);
} }
static void static void
nm_client_state_changed (NMClient *client, nm_client_state_changed (CcPowerPanel *self)
GParamSpec *pspec,
CcPowerPanel *self)
{ {
gboolean visible; gboolean visible;
gboolean active; gboolean active;
gboolean sensitive; gboolean sensitive;
visible = has_wifi_devices (self->nm_client); visible = has_wifi_devices (self->nm_client);
active = nm_client_networking_get_enabled (client) && active = nm_client_networking_get_enabled (self->nm_client) &&
nm_client_wireless_get_enabled (client) && nm_client_wireless_get_enabled (self->nm_client) &&
nm_client_wireless_hardware_get_enabled (client); nm_client_wireless_hardware_get_enabled (self->nm_client);
sensitive = nm_client_networking_get_enabled (client) && sensitive = nm_client_networking_get_enabled (self->nm_client) &&
nm_client_wireless_hardware_get_enabled (client); nm_client_wireless_hardware_get_enabled (self->nm_client);
g_debug ("wifi state changed to %s", active ? "enabled" : "disabled"); g_debug ("wifi state changed to %s", active ? "enabled" : "disabled");
@ -1549,14 +1529,14 @@ nm_client_state_changed (NMClient *client,
visible = has_mobile_devices (self->nm_client); visible = has_mobile_devices (self->nm_client);
/* Set the switch active, if either of wimax or wwan is enabled. */ /* Set the switch active, if either of wimax or wwan is enabled. */
active = nm_client_networking_get_enabled (client) && active = nm_client_networking_get_enabled (self->nm_client) &&
((nm_client_wimax_get_enabled (client) && ((nm_client_wimax_get_enabled (self->nm_client) &&
nm_client_wimax_hardware_get_enabled (client)) || nm_client_wimax_hardware_get_enabled (self->nm_client)) ||
(nm_client_wwan_get_enabled (client) && (nm_client_wwan_get_enabled (self->nm_client) &&
nm_client_wwan_hardware_get_enabled (client))); nm_client_wwan_hardware_get_enabled (self->nm_client)));
sensitive = nm_client_networking_get_enabled (client) && sensitive = nm_client_networking_get_enabled (self->nm_client) &&
(nm_client_wwan_hardware_get_enabled (client) || (nm_client_wwan_hardware_get_enabled (self->nm_client) ||
nm_client_wimax_hardware_get_enabled (client)); nm_client_wimax_hardware_get_enabled (self->nm_client));
g_debug ("mobile state changed to %s", active ? "enabled" : "disabled"); g_debug ("mobile state changed to %s", active ? "enabled" : "disabled");
@ -1568,9 +1548,7 @@ nm_client_state_changed (NMClient *client,
} }
static void static void
nm_device_changed (NMClient *client, nm_device_changed (CcPowerPanel *self)
NMDevice *device,
CcPowerPanel *self)
{ {
gtk_widget_set_visible (self->wifi_row, has_wifi_devices (self->nm_client)); gtk_widget_set_visible (self->wifi_row, has_wifi_devices (self->nm_client));
gtk_widget_set_visible (self->mobile_row, has_mobile_devices (self->nm_client)); gtk_widget_set_visible (self->mobile_row, has_mobile_devices (self->nm_client));
@ -1583,14 +1561,14 @@ setup_nm_client (CcPowerPanel *self,
self->nm_client = client; self->nm_client = client;
g_signal_connect_object (self->nm_client, "notify", g_signal_connect_object (self->nm_client, "notify",
G_CALLBACK (nm_client_state_changed), self, 0); G_CALLBACK (nm_client_state_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->nm_client, "device-added", g_signal_connect_object (self->nm_client, "device-added",
G_CALLBACK (nm_device_changed), self, 0); G_CALLBACK (nm_device_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->nm_client, "device-removed", g_signal_connect_object (self->nm_client, "device-removed",
G_CALLBACK (nm_device_changed), self, 0); G_CALLBACK (nm_device_changed), self, G_CONNECT_SWAPPED);
nm_client_state_changed (self->nm_client, NULL, self); nm_client_state_changed (self);
nm_device_changed (self->nm_client, NULL, self); nm_device_changed (self);
} }
static void static void
@ -1629,7 +1607,7 @@ nm_client_ready_cb (GObject *source_object,
#endif #endif
static gboolean static gboolean
keynav_failed (GtkWidget *list, GtkDirectionType direction, CcPowerPanel *self) keynav_failed (CcPowerPanel *self, GtkDirectionType direction, GtkWidget *list)
{ {
GtkWidget *next_list = NULL; GtkWidget *next_list = NULL;
GList *item, *boxes_list; GList *item, *boxes_list;
@ -1688,7 +1666,7 @@ keynav_failed (GtkWidget *list, GtkDirectionType direction, CcPowerPanel *self)
} }
static void static void
combo_idle_delay_changed_cb (GtkWidget *widget, CcPowerPanel *self) combo_idle_delay_changed_cb (CcPowerPanel *self)
{ {
GtkTreeIter iter; GtkTreeIter iter;
GtkTreeModel *model; GtkTreeModel *model;
@ -1696,12 +1674,12 @@ combo_idle_delay_changed_cb (GtkWidget *widget, CcPowerPanel *self)
gboolean ret; gboolean ret;
/* no selection */ /* no selection */
ret = gtk_combo_box_get_active_iter (GTK_COMBO_BOX(widget), &iter); ret = gtk_combo_box_get_active_iter (GTK_COMBO_BOX (self->idle_delay_combo), &iter);
if (!ret) if (!ret)
return; return;
/* get entry */ /* get entry */
model = gtk_combo_box_get_model (GTK_COMBO_BOX(widget)); model = gtk_combo_box_get_model (GTK_COMBO_BOX (self->idle_delay_combo));
gtk_tree_model_get (model, &iter, gtk_tree_model_get (model, &iter,
1, &value, 1, &value,
-1); -1);
@ -1711,7 +1689,7 @@ combo_idle_delay_changed_cb (GtkWidget *widget, CcPowerPanel *self)
} }
static void static void
combo_power_button_changed_cb (GtkWidget *widget, CcPowerPanel *self) combo_power_button_changed_cb (CcPowerPanel *self)
{ {
GtkTreeIter iter; GtkTreeIter iter;
GtkTreeModel *model; GtkTreeModel *model;
@ -1719,12 +1697,12 @@ combo_power_button_changed_cb (GtkWidget *widget, CcPowerPanel *self)
gboolean ret; gboolean ret;
/* no selection */ /* no selection */
ret = gtk_combo_box_get_active_iter (GTK_COMBO_BOX(widget), &iter); ret = gtk_combo_box_get_active_iter (GTK_COMBO_BOX (self->power_button_combo), &iter);
if (!ret) if (!ret)
return; return;
/* get entry */ /* get entry */
model = gtk_combo_box_get_model (GTK_COMBO_BOX(widget)); model = gtk_combo_box_get_model (GTK_COMBO_BOX (self->power_button_combo));
gtk_tree_model_get (model, &iter, gtk_tree_model_get (model, &iter,
1, &value, 1, &value,
-1); -1);
@ -1761,8 +1739,8 @@ add_brightness_row (CcPowerPanel *self,
gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0);
gtk_size_group_add_widget (self->level_sizegroup, scale); gtk_size_group_add_widget (self->level_sizegroup, scale);
gtk_range_set_round_digits (GTK_RANGE (scale), 0); gtk_range_set_round_digits (GTK_RANGE (scale), 0);
g_signal_connect (scale, "value-changed", g_signal_connect_object (scale, "value-changed",
G_CALLBACK (brightness_slider_value_changed_cb), self); G_CALLBACK (brightness_slider_value_changed_cb), self, G_CONNECT_SWAPPED);
gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0);
@ -1770,9 +1748,7 @@ add_brightness_row (CcPowerPanel *self,
} }
static void static void
als_enabled_setting_changed (GSettings *settings, als_enabled_setting_changed (CcPowerPanel *self)
const gchar *key,
CcPowerPanel *self)
{ {
als_enabled_state_changed (self); als_enabled_state_changed (self);
} }
@ -1820,7 +1796,6 @@ static void
add_power_saving_section (CcPowerPanel *self) add_power_saving_section (CcPowerPanel *self)
{ {
GtkWidget *widget, *box, *label, *row; GtkWidget *widget, *box, *label, *row;
GtkWidget *combo;
GtkWidget *title; GtkWidget *title;
GtkWidget *sw; GtkWidget *sw;
int value; int value;
@ -1840,7 +1815,7 @@ add_power_saving_section (CcPowerPanel *self)
widget = gtk_list_box_new (); widget = gtk_list_box_new ();
gtk_widget_show (widget); gtk_widget_show (widget);
self->boxes_reverse = g_list_prepend (self->boxes_reverse, widget); self->boxes_reverse = g_list_prepend (self->boxes_reverse, widget);
g_signal_connect (widget, "keynav-failed", G_CALLBACK (keynav_failed), self); g_signal_connect_object (widget, "keynav-failed", G_CALLBACK (keynav_failed), self, G_CONNECT_SWAPPED);
gtk_list_box_set_selection_mode (GTK_LIST_BOX (widget), GTK_SELECTION_NONE); gtk_list_box_set_selection_mode (GTK_LIST_BOX (widget), GTK_SELECTION_NONE);
gtk_list_box_set_header_func (GTK_LIST_BOX (widget), gtk_list_box_set_header_func (GTK_LIST_BOX (widget),
cc_list_box_update_header_func, cc_list_box_update_header_func,
@ -1875,8 +1850,8 @@ add_power_saving_section (CcPowerPanel *self)
iio_proxy_appeared_cb, iio_proxy_appeared_cb,
iio_proxy_vanished_cb, iio_proxy_vanished_cb,
self, NULL); self, NULL);
g_signal_connect (self->gsd_settings, "changed", g_signal_connect_object (self->gsd_settings, "changed",
G_CALLBACK (als_enabled_setting_changed), self); G_CALLBACK (als_enabled_setting_changed), self, G_CONNECT_SWAPPED);
self->als_row = row = no_prelight_row_new (); self->als_row = row = no_prelight_row_new ();
gtk_widget_show (row); gtk_widget_show (row);
box = row_box_new (); box = row_box_new ();
@ -1891,8 +1866,8 @@ add_power_saving_section (CcPowerPanel *self)
gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->als_switch); gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->als_switch);
gtk_container_add (GTK_CONTAINER (widget), row); gtk_container_add (GTK_CONTAINER (widget), row);
gtk_size_group_add_widget (self->row_sizegroup, row); gtk_size_group_add_widget (self->row_sizegroup, row);
g_signal_connect (G_OBJECT (self->als_switch), "notify::active", g_signal_connect_object (self->als_switch, "notify::active",
G_CALLBACK (als_switch_changed), self); G_CALLBACK (als_switch_changed), self, G_CONNECT_SWAPPED);
row = add_brightness_row (self, _("_Keyboard Brightness"), &self->kbd_brightness_scale); row = add_brightness_row (self, _("_Keyboard Brightness"), &self->kbd_brightness_scale);
gtk_widget_show (row); gtk_widget_show (row);
@ -1926,18 +1901,18 @@ add_power_saving_section (CcPowerPanel *self)
title = row_title_new (_("_Blank Screen"), NULL, &label); title = row_title_new (_("_Blank Screen"), NULL, &label);
gtk_box_pack_start (GTK_BOX (box), title, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box), title, TRUE, TRUE, 0);
combo = gtk_combo_box_text_new (); self->idle_delay_combo = gtk_combo_box_text_new ();
gtk_widget_show (combo); gtk_widget_show (self->idle_delay_combo);
gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (combo), 0); gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (self->idle_delay_combo), 0);
gtk_combo_box_set_model (GTK_COMBO_BOX (combo), gtk_combo_box_set_model (GTK_COMBO_BOX (self->idle_delay_combo),
GTK_TREE_MODEL (self->liststore_idle_time)); GTK_TREE_MODEL (self->liststore_idle_time));
value = g_settings_get_uint (self->session_settings, "idle-delay"); value = g_settings_get_uint (self->session_settings, "idle-delay");
set_value_for_combo (GTK_COMBO_BOX (combo), value); set_value_for_combo (GTK_COMBO_BOX (self->idle_delay_combo), value);
g_signal_connect (combo, "changed", g_signal_connect_object (self->idle_delay_combo, "changed",
G_CALLBACK (combo_idle_delay_changed_cb), self); G_CALLBACK (combo_idle_delay_changed_cb), self, G_CONNECT_SWAPPED);
gtk_widget_set_valign (combo, GTK_ALIGN_CENTER); gtk_widget_set_valign (self->idle_delay_combo, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (box), combo, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box), self->idle_delay_combo, FALSE, TRUE, 0);
gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->idle_delay_combo);
gtk_container_add (GTK_CONTAINER (widget), row); gtk_container_add (GTK_CONTAINER (widget), row);
gtk_size_group_add_widget (self->row_sizegroup, row); gtk_size_group_add_widget (self->row_sizegroup, row);
@ -1976,8 +1951,8 @@ add_power_saving_section (CcPowerPanel *self)
gtk_container_add (GTK_CONTAINER (widget), row); gtk_container_add (GTK_CONTAINER (widget), row);
gtk_size_group_add_widget (self->row_sizegroup, row); gtk_size_group_add_widget (self->row_sizegroup, row);
g_signal_connect (G_OBJECT (self->mobile_switch), "notify::active", g_signal_connect_object (G_OBJECT (self->mobile_switch), "notify::active",
G_CALLBACK (mobile_switch_changed), self); G_CALLBACK (mobile_switch_changed), self, G_CONNECT_SWAPPED);
/* Create and store a NMClient instance if it doesn't exist yet */ /* Create and store a NMClient instance if it doesn't exist yet */
if (cc_object_storage_has_object (CC_OBJECT_NMCLIENT)) if (cc_object_storage_has_object (CC_OBJECT_NMCLIENT))
@ -1985,8 +1960,8 @@ add_power_saving_section (CcPowerPanel *self)
else else
nm_client_new_async (cc_panel_get_cancellable (CC_PANEL (self)), nm_client_ready_cb, self); nm_client_new_async (cc_panel_get_cancellable (CC_PANEL (self)), nm_client_ready_cb, self);
g_signal_connect (G_OBJECT (self->wifi_switch), "notify::active", g_signal_connect_object (G_OBJECT (self->wifi_switch), "notify::active",
G_CALLBACK (wifi_switch_changed), self); G_CALLBACK (wifi_switch_changed), self, G_CONNECT_SWAPPED);
#endif #endif
#ifdef HAVE_BLUETOOTH #ifdef HAVE_BLUETOOTH
@ -2029,8 +2004,8 @@ add_power_saving_section (CcPowerPanel *self)
self->bt_row = row; self->bt_row = row;
g_signal_connect_object (self->bt_rfkill, "g-properties-changed", g_signal_connect_object (self->bt_rfkill, "g-properties-changed",
G_CALLBACK (bt_powered_state_changed), self, G_CONNECT_SWAPPED); G_CALLBACK (bt_powered_state_changed), self, G_CONNECT_SWAPPED);
g_signal_connect (G_OBJECT (self->bt_switch), "notify::active", g_signal_connect_object (G_OBJECT (self->bt_switch), "notify::active",
G_CALLBACK (bt_switch_changed), self); G_CALLBACK (bt_switch_changed), self, G_CONNECT_SWAPPED);
bt_powered_state_changed (self); bt_powered_state_changed (self);
#endif #endif
@ -2086,9 +2061,8 @@ update_automatic_suspend_label (CcPowerPanel *self)
} }
static void static void
on_suspend_settings_changed (GSettings *settings, on_suspend_settings_changed (CcPowerPanel *self,
const char *key, const char *key)
CcPowerPanel *self)
{ {
if (g_str_has_prefix (key, "sleep-inactive-")) if (g_str_has_prefix (key, "sleep-inactive-"))
{ {
@ -2114,9 +2088,7 @@ activate_row (CcPowerPanel *self,
} }
static gboolean static gboolean
automatic_suspend_activate (GtkWidget *widget, automatic_suspend_activate (CcPowerPanel *self)
gboolean cycle,
CcPowerPanel *self)
{ {
activate_row (self, GTK_LIST_BOX_ROW (self->automatic_suspend_row)); activate_row (self, GTK_LIST_BOX_ROW (self->automatic_suspend_row));
return TRUE; return TRUE;
@ -2236,7 +2208,6 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
g_autofree gchar *s = NULL; g_autofree gchar *s = NULL;
gint value; gint value;
GtkWidget *dialog; GtkWidget *dialog;
GtkWidget *combo;
GtkTreeModel *model; GtkTreeModel *model;
GsdPowerButtonActionType button_value; GsdPowerButtonActionType button_value;
gboolean can_suspend, can_hibernate; gboolean can_suspend, can_hibernate;
@ -2278,13 +2249,13 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
widget = gtk_list_box_new (); widget = gtk_list_box_new ();
gtk_widget_show (widget); gtk_widget_show (widget);
self->boxes_reverse = g_list_prepend (self->boxes_reverse, widget); self->boxes_reverse = g_list_prepend (self->boxes_reverse, widget);
g_signal_connect (widget, "keynav-failed", G_CALLBACK (keynav_failed), self); g_signal_connect_object (widget, "keynav-failed", G_CALLBACK (keynav_failed), self, G_CONNECT_SWAPPED);
gtk_list_box_set_selection_mode (GTK_LIST_BOX (widget), GTK_SELECTION_NONE); gtk_list_box_set_selection_mode (GTK_LIST_BOX (widget), GTK_SELECTION_NONE);
gtk_list_box_set_header_func (GTK_LIST_BOX (widget), gtk_list_box_set_header_func (GTK_LIST_BOX (widget),
cc_list_box_update_header_func, cc_list_box_update_header_func,
NULL, NULL); NULL, NULL);
g_signal_connect_swapped (widget, "row-activated", g_signal_connect_object (widget, "row-activated",
G_CALLBACK (activate_row), self); G_CALLBACK (activate_row), self, G_CONNECT_SWAPPED);
atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (label)), atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (label)),
ATK_RELATION_LABEL_FOR, ATK_RELATION_LABEL_FOR,
@ -2314,8 +2285,8 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
self->automatic_suspend_label = gtk_label_new (""); self->automatic_suspend_label = gtk_label_new ("");
gtk_widget_show (self->automatic_suspend_label); gtk_widget_show (self->automatic_suspend_label);
gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->automatic_suspend_label); gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->automatic_suspend_label);
g_signal_connect (self->automatic_suspend_label, "mnemonic-activate", g_signal_connect_object (self->automatic_suspend_label, "mnemonic-activate",
G_CALLBACK (automatic_suspend_activate), self); G_CALLBACK (automatic_suspend_activate), self, G_CONNECT_SWAPPED);
gtk_widget_set_halign (self->automatic_suspend_label, GTK_ALIGN_END); gtk_widget_set_halign (self->automatic_suspend_label, GTK_ALIGN_END);
gtk_box_pack_start (GTK_BOX (box), self->automatic_suspend_label, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box), self->automatic_suspend_label, FALSE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (widget), row); gtk_container_add (GTK_CONTAINER (widget), row);
@ -2323,7 +2294,7 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
dialog = self->automatic_suspend_dialog; dialog = self->automatic_suspend_dialog;
g_signal_connect (dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); g_signal_connect (dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL);
g_signal_connect (self->gsd_settings, "changed", G_CALLBACK (on_suspend_settings_changed), self); g_signal_connect_object (self->gsd_settings, "changed", G_CALLBACK (on_suspend_settings_changed), self, G_CONNECT_SWAPPED);
g_settings_bind_with_mapping (self->gsd_settings, "sleep-inactive-battery-type", g_settings_bind_with_mapping (self->gsd_settings, "sleep-inactive-battery-type",
self->suspend_on_battery_switch, "active", self->suspend_on_battery_switch, "active",
@ -2333,8 +2304,8 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
g_object_set_data (G_OBJECT (self->suspend_on_battery_delay_combo), "_gsettings_key", "sleep-inactive-battery-timeout"); g_object_set_data (G_OBJECT (self->suspend_on_battery_delay_combo), "_gsettings_key", "sleep-inactive-battery-timeout");
value = g_settings_get_int (self->gsd_settings, "sleep-inactive-battery-timeout"); value = g_settings_get_int (self->gsd_settings, "sleep-inactive-battery-timeout");
set_value_for_combo (GTK_COMBO_BOX (self->suspend_on_battery_delay_combo), value); set_value_for_combo (GTK_COMBO_BOX (self->suspend_on_battery_delay_combo), value);
g_signal_connect (self->suspend_on_battery_delay_combo, "changed", g_signal_connect_object (self->suspend_on_battery_delay_combo, "changed",
G_CALLBACK (combo_time_changed_cb), self); G_CALLBACK (combo_time_changed_cb), self, G_CONNECT_SWAPPED);
g_object_bind_property (self->suspend_on_battery_switch, "active", self->suspend_on_battery_delay_combo, "sensitive", g_object_bind_property (self->suspend_on_battery_switch, "active", self->suspend_on_battery_delay_combo, "sensitive",
G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
@ -2346,8 +2317,8 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
g_object_set_data (G_OBJECT (self->suspend_on_ac_delay_combo), "_gsettings_key", "sleep-inactive-ac-timeout"); g_object_set_data (G_OBJECT (self->suspend_on_ac_delay_combo), "_gsettings_key", "sleep-inactive-ac-timeout");
value = g_settings_get_int (self->gsd_settings, "sleep-inactive-ac-timeout"); value = g_settings_get_int (self->gsd_settings, "sleep-inactive-ac-timeout");
set_value_for_combo (GTK_COMBO_BOX (self->suspend_on_ac_delay_combo), value); set_value_for_combo (GTK_COMBO_BOX (self->suspend_on_ac_delay_combo), value);
g_signal_connect (self->suspend_on_ac_delay_combo, "changed", g_signal_connect_object (self->suspend_on_ac_delay_combo, "changed",
G_CALLBACK (combo_time_changed_cb), self); G_CALLBACK (combo_time_changed_cb), self, G_CONNECT_SWAPPED);
g_object_bind_property (self->suspend_on_ac_switch, "active", self->suspend_on_ac_delay_combo, "sensitive", g_object_bind_property (self->suspend_on_ac_switch, "active", self->suspend_on_ac_delay_combo, "sensitive",
G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
@ -2369,19 +2340,19 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
title = row_title_new (_("Po_wer Button Action"), NULL, &label); title = row_title_new (_("Po_wer Button Action"), NULL, &label);
gtk_box_pack_start (GTK_BOX (box), title, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box), title, TRUE, TRUE, 0);
combo = gtk_combo_box_text_new (); self->power_button_combo = gtk_combo_box_text_new ();
gtk_widget_show (combo); gtk_widget_show (self->power_button_combo);
gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (combo), 0); gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (self->power_button_combo), 0);
model = GTK_TREE_MODEL (self->liststore_power_button); model = GTK_TREE_MODEL (self->liststore_power_button);
populate_power_button_model (model, can_suspend, can_hibernate); populate_power_button_model (model, can_suspend, can_hibernate);
gtk_combo_box_set_model (GTK_COMBO_BOX (combo), model); gtk_combo_box_set_model (GTK_COMBO_BOX (self->power_button_combo), model);
button_value = g_settings_get_enum (self->gsd_settings, "power-button-action"); button_value = g_settings_get_enum (self->gsd_settings, "power-button-action");
set_value_for_combo (GTK_COMBO_BOX (combo), button_value); set_value_for_combo (GTK_COMBO_BOX (self->power_button_combo), button_value);
g_signal_connect (combo, "changed", g_signal_connect_object (self->power_button_combo, "changed",
G_CALLBACK (combo_power_button_changed_cb), self); G_CALLBACK (combo_power_button_changed_cb), self, G_CONNECT_SWAPPED);
gtk_widget_set_valign (combo, GTK_ALIGN_CENTER); gtk_widget_set_valign (self->power_button_combo, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (box), combo, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box), self->power_button_combo, FALSE, TRUE, 0);
gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->power_button_combo);
gtk_container_add (GTK_CONTAINER (widget), row); gtk_container_add (GTK_CONTAINER (widget), row);
gtk_size_group_add_widget (self->row_sizegroup, row); gtk_size_group_add_widget (self->row_sizegroup, row);
} }
@ -2434,7 +2405,7 @@ add_battery_section (CcPowerPanel *self)
self->battery_list = widget = GTK_WIDGET (gtk_list_box_new ()); self->battery_list = widget = GTK_WIDGET (gtk_list_box_new ());
gtk_widget_show (widget); gtk_widget_show (widget);
self->boxes_reverse = g_list_prepend (self->boxes_reverse, self->battery_list); self->boxes_reverse = g_list_prepend (self->boxes_reverse, self->battery_list);
g_signal_connect (widget, "keynav-failed", G_CALLBACK (keynav_failed), self); g_signal_connect_object (widget, "keynav-failed", G_CALLBACK (keynav_failed), self, G_CONNECT_SWAPPED);
gtk_list_box_set_selection_mode (GTK_LIST_BOX (widget), GTK_SELECTION_NONE); gtk_list_box_set_selection_mode (GTK_LIST_BOX (widget), GTK_SELECTION_NONE);
gtk_list_box_set_header_func (GTK_LIST_BOX (widget), gtk_list_box_set_header_func (GTK_LIST_BOX (widget),
cc_list_box_update_header_func, cc_list_box_update_header_func,
@ -2482,7 +2453,7 @@ add_device_section (CcPowerPanel *self)
self->device_list = widget = gtk_list_box_new (); self->device_list = widget = gtk_list_box_new ();
gtk_widget_show (widget); gtk_widget_show (widget);
self->boxes_reverse = g_list_prepend (self->boxes_reverse, self->device_list); self->boxes_reverse = g_list_prepend (self->boxes_reverse, self->device_list);
g_signal_connect (widget, "keynav-failed", G_CALLBACK (keynav_failed), self); g_signal_connect_object (widget, "keynav-failed", G_CALLBACK (keynav_failed), self, G_CONNECT_SWAPPED);
gtk_list_box_set_selection_mode (GTK_LIST_BOX (widget), GTK_SELECTION_NONE); gtk_list_box_set_selection_mode (GTK_LIST_BOX (widget), GTK_SELECTION_NONE);
gtk_list_box_set_header_func (GTK_LIST_BOX (widget), gtk_list_box_set_header_func (GTK_LIST_BOX (widget),
cc_list_box_update_header_func, cc_list_box_update_header_func,
@ -2552,16 +2523,16 @@ cc_power_panel_init (CcPowerPanel *self)
self->boxes = g_list_reverse (self->boxes); self->boxes = g_list_reverse (self->boxes);
/* populate batteries */ /* populate batteries */
g_signal_connect (self->up_client, "device-added", G_CALLBACK (up_client_device_added), self); g_signal_connect_object (self->up_client, "device-added", G_CALLBACK (up_client_device_added), self, G_CONNECT_SWAPPED);
g_signal_connect (self->up_client, "device-removed", G_CALLBACK (up_client_device_removed), self); g_signal_connect_object (self->up_client, "device-removed", G_CALLBACK (up_client_device_removed), self, G_CONNECT_SWAPPED);
self->devices = up_client_get_devices2 (self->up_client); self->devices = up_client_get_devices2 (self->up_client);
for (i = 0; self->devices != NULL && i < self->devices->len; i++) { for (i = 0; self->devices != NULL && i < self->devices->len; i++) {
UpDevice *device = g_ptr_array_index (self->devices, i); UpDevice *device = g_ptr_array_index (self->devices, i);
g_signal_connect (G_OBJECT (device), "notify", g_signal_connect_object (G_OBJECT (device), "notify",
G_CALLBACK (up_client_changed), self); G_CALLBACK (up_client_changed), self, G_CONNECT_SWAPPED);
} }
up_client_changed (self->up_client, NULL, self); up_client_changed (self);
self->focus_adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->main_scroll)); self->focus_adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->main_scroll));
gtk_container_set_focus_vadjustment (GTK_CONTAINER (self->main_box), self->focus_adjustment); gtk_container_set_focus_vadjustment (GTK_CONTAINER (self->main_box), self->focus_adjustment);