diff options
author | Rui Matos <tiagomatos@gmail.com> | 2013-09-30 18:55:03 +0200 |
---|---|---|
committer | Rui Matos <tiagomatos@gmail.com> | 2013-10-01 11:35:15 +0200 |
commit | 898261f54c76d7d22b083d2d526ddc832083dd8b (patch) | |
tree | e33983064101ddf0c5a96724ada20d8b3ee07c59 | |
parent | 7e2c0f80061812d0cd262ff7a64dcc95f6eddcfe (diff) | |
download | gnome-control-center-898261f54c76d7d22b083d2d526ddc832083dd8b.tar.gz |
network: Update forget button sensitivity when rows are destroyed
Doesn't make sense to keep it sensitive after the dialog returns OK.
This also avoids using finalized objects if the forget button is
clicked after some previously checked rows were destroyed because
their connection got removed elsewhere.
https://bugzilla.gnome.org/show_bug.cgi?id=709118
-rw-r--r-- | panels/network/net-device-wifi.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c index fc70e3147..fbb82091a 100644 --- a/panels/network/net-device-wifi.c +++ b/panels/network/net-device-wifi.c @@ -1437,6 +1437,18 @@ check_toggled (GtkToggleButton *check, GtkWidget *forget) } static void +update_forget (GtkWidget *forget, + gpointer row) +{ + GList *rows; + + rows = g_object_steal_data (G_OBJECT (forget), "rows"); + rows = g_list_remove (rows, row); + g_object_set_data_full (G_OBJECT (forget), "rows", rows, (GDestroyNotify)g_list_free); + gtk_widget_set_sensitive (forget, rows != NULL); +} + +static void make_row (GtkSizeGroup *rows, GtkSizeGroup *icons, GtkWidget *forget, @@ -1513,6 +1525,8 @@ make_row (GtkSizeGroup *rows, gtk_widget_set_halign (widget, GTK_ALIGN_CENTER); gtk_widget_set_valign (widget, GTK_ALIGN_CENTER); gtk_box_pack_start (GTK_BOX (row), widget, FALSE, FALSE, 0); + g_signal_connect_object (row, "destroy", + G_CALLBACK (update_forget), forget, G_CONNECT_SWAPPED); } if (check_out) *check_out = widget; |