[gnome-control-center] network: Fix removed connections not disappearing
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] network: Fix removed connections not disappearing
- Date: Tue, 7 Jun 2016 12:25:59 +0000 (UTC)
commit 199bd2c343fed1b9efd34a3cb171ef1043f3dadc
Author: Bastien Nocera <hadess hadess net>
Date: Tue Jun 7 13:06:57 2016 +0200
network: Fix removed connections not disappearing
A regression introduced in commit 9183d34, when we ported to libnm 1.2.
panels/network/net-device-wifi.c | 38 ++++++++++++++++++++++++++++++++++----
1 files changed, 34 insertions(+), 4 deletions(-)
---
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index 390043a..6a6ff05 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -1340,6 +1340,37 @@ client_connection_added_cb (NMClient *client,
}
static void
+client_connection_removed_cb (NMClient *client,
+ NMRemoteConnection *connection,
+ NetDeviceWifi *device_wifi)
+{
+ GtkWidget *swin;
+ GtkWidget *list;
+ GList *rows, *l;
+ const char *uuid;
+
+ uuid = nm_connection_get_uuid (NM_CONNECTION (connection));
+
+ swin = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder,
+ "scrolledwindow_list"));
+ list = gtk_bin_get_child (GTK_BIN (gtk_bin_get_child (GTK_BIN (swin))));
+ rows = gtk_container_get_children (GTK_CONTAINER (list));
+ for (l = rows; l != NULL; l = l->next) {
+ GtkWidget *row = l->data;
+ NMConnection *connection;
+ const char *uuid_r;
+
+ connection = g_object_get_data (G_OBJECT (row), "connection");
+ uuid_r = nm_connection_get_uuid (connection);
+ if (g_strcmp0 (uuid_r, uuid) == 0) {
+ gtk_widget_destroy (row);
+ break;
+ }
+ }
+ g_list_free (rows);
+}
+
+static void
net_device_wifi_constructed (GObject *object)
{
NetDeviceWifi *device_wifi = NET_DEVICE_WIFI (object);
@@ -1381,6 +1412,8 @@ net_device_wifi_constructed (GObject *object)
g_signal_connect (client, NM_CLIENT_CONNECTION_ADDED,
G_CALLBACK (client_connection_added_cb), device_wifi);
+ g_signal_connect (client, NM_CLIENT_CONNECTION_REMOVED,
+ G_CALLBACK (client_connection_removed_cb), device_wifi);
widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder, "heading_list"));
g_object_bind_property (device_wifi, "title", widget, "label", 0);
@@ -1721,11 +1754,8 @@ make_row (GtkSizeGroup *rows,
gtk_widget_show_all (row);
g_object_set_data (G_OBJECT (row), "ap", ap);
- if (connection) {
+ if (connection)
g_object_set_data (G_OBJECT (row), "connection", connection);
- g_signal_connect_object (connection, "removed",
- G_CALLBACK (gtk_widget_destroy), row, G_CONNECT_SWAPPED);
- }
g_object_set_data (G_OBJECT (row), "timestamp", GUINT_TO_POINTER (timestamp));
g_object_set_data (G_OBJECT (row), "active", GUINT_TO_POINTER (active));
g_object_set_data (G_OBJECT (row), "strength", GUINT_TO_POINTER (strength));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]