summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRui Matos <tiagomatos@gmail.com>2013-09-30 18:55:03 +0200
committerRui Matos <tiagomatos@gmail.com>2013-10-01 11:35:15 +0200
commit898261f54c76d7d22b083d2d526ddc832083dd8b (patch)
treee33983064101ddf0c5a96724ada20d8b3ee07c59
parent7e2c0f80061812d0cd262ff7a64dcc95f6eddcfe (diff)
downloadgnome-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.c14
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;