[gnome-control-center] network: Remove net_object_emit_removed



commit 2752f38a723ddea64e4094cdef45db8103d13c42
Author: Robert Ancell <robert ancell canonical com>
Date:   Thu Oct 24 13:21:17 2019 +1300

    network: Remove net_object_emit_removed

 panels/network/cc-network-panel.c | 45 +++++++++++++++++++--------------------
 panels/network/net-object.c       | 14 ------------
 panels/network/net-object.h       |  1 -
 panels/network/net-vpn.c          | 11 ----------
 4 files changed, 22 insertions(+), 49 deletions(-)
---
diff --git a/panels/network/cc-network-panel.c b/panels/network/cc-network-panel.c
index 4b27324e7..818199337 100644
--- a/panels/network/cc-network-panel.c
+++ b/panels/network/cc-network-panel.c
@@ -234,17 +234,6 @@ cc_network_panel_get_help_uri (CcPanel *self)
        return "help:gnome-help/net";
 }
 
-static void
-object_removed_cb (CcNetworkPanel *self, NetObject *object)
-{
-        GtkWidget *widget;
-
-        /* remove device */
-        widget = g_hash_table_lookup (self->device_to_widget, object);
-        if (widget != NULL)
-                gtk_widget_destroy (widget);
-}
-
 static void
 panel_refresh_device_titles (CcNetworkPanel *self)
 {
@@ -483,22 +472,22 @@ panel_add_device (CcNetworkPanel *self, NMDevice *device)
          * be handled by the future Mobile Broadband panel */
         if (NET_IS_DEVICE_BLUETOOTH (net_device))
                 update_bluetooth_section (self);
-
-        g_signal_connect_object (net_device, "removed",
-                                 G_CALLBACK (object_removed_cb), self, G_CONNECT_SWAPPED);
 }
 
 static void
 panel_remove_device (CcNetworkPanel *self, NMDevice *device)
 {
         NetObject *net_device = NULL;
+        GtkWidget *widget;
 
         net_device = g_hash_table_lookup (self->nm_device_to_device, device);
         if (net_device == NULL)
                 return;
 
-        /* NMObject will not fire the "removed" signal, so handle the UI removal explicitly */
-        object_removed_cb (self, net_device);
+        widget = g_hash_table_lookup (self->device_to_widget, device);
+        if (widget != NULL)
+                gtk_widget_destroy (widget);
+
         g_ptr_array_remove (self->bluetooth_devices, net_device);
         g_ptr_array_remove (self->ethernet_devices, net_device);
         g_ptr_array_remove (self->mobile_devices, net_device);
@@ -620,8 +609,7 @@ panel_add_vpn_device (CcNetworkPanel *self, NMConnection *connection)
         /* add as a VPN object */
         net_vpn = net_vpn_new (connection,
                                self->client);
-        g_signal_connect_object (net_vpn, "removed",
-                                 G_CALLBACK (object_removed_cb), self, G_CONNECT_SWAPPED);
+
 
         /* add as a panel */
         add_object (self, NET_OBJECT (net_vpn), GTK_CONTAINER (self->box_vpn));
@@ -636,8 +624,7 @@ panel_add_vpn_device (CcNetworkPanel *self, NMConnection *connection)
 }
 
 static void
-add_connection (CcNetworkPanel *self,
-                NMConnection *connection)
+add_connection (CcNetworkPanel *self, NMConnection *connection)
 {
         NMSettingConnection *s_con;
         const gchar *type, *iface;
@@ -661,9 +648,19 @@ add_connection (CcNetworkPanel *self,
 }
 
 static void
-notify_connection_added_cb (CcNetworkPanel *self, NMRemoteConnection *connection)
+client_connection_removed_cb (CcNetworkPanel *self, NMConnection *connection)
 {
-        add_connection (self, NM_CONNECTION (connection));
+        guint i;
+
+        for (i = 0; i < self->vpns->len; i++) {
+                NetVpn *vpn = g_ptr_array_index (self->vpns, i);
+                if (net_vpn_get_connection (vpn) == connection) {
+                        GtkWidget *widget = g_hash_table_lookup (self->device_to_widget, vpn);
+                        if (widget != NULL)
+                                gtk_widget_destroy (widget);
+                        return;
+                }
+        }
 }
 
 static void
@@ -813,7 +810,9 @@ cc_network_panel_init (CcNetworkPanel *self)
 
         /* add remote settings such as VPN settings as virtual devices */
         g_signal_connect_object (self->client, NM_CLIENT_CONNECTION_ADDED,
-                                 G_CALLBACK (notify_connection_added_cb), self, G_CONNECT_SWAPPED);
+                                 G_CALLBACK (add_connection), self, G_CONNECT_SWAPPED);
+        g_signal_connect_object (self->client, NM_CLIENT_CONNECTION_REMOVED,
+                                 G_CALLBACK (client_connection_removed_cb), self, G_CONNECT_SWAPPED);
 
         toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
         g_signal_connect_after (toplevel, "map", G_CALLBACK (on_toplevel_map), self);
diff --git a/panels/network/net-object.c b/panels/network/net-object.c
index c5e622ad7..d717bdb01 100644
--- a/panels/network/net-object.c
+++ b/panels/network/net-object.c
@@ -39,7 +39,6 @@ enum {
 
 enum {
         SIGNAL_CHANGED,
-        SIGNAL_REMOVED,
         SIGNAL_LAST
 };
 
@@ -53,13 +52,6 @@ net_object_emit_changed (NetObject *self)
         g_signal_emit (self, signals[SIGNAL_CHANGED], 0);
 }
 
-void
-net_object_emit_removed (NetObject *self)
-{
-        g_return_if_fail (NET_IS_OBJECT (self));
-        g_signal_emit (self, signals[SIGNAL_REMOVED], 0);
-}
-
 const gchar *
 net_object_get_title (NetObject *self)
 {
@@ -165,12 +157,6 @@ net_object_class_init (NetObjectClass *klass)
                               0,
                               NULL, NULL, g_cclosure_marshal_VOID__VOID,
                               G_TYPE_NONE, 0);
-        signals[SIGNAL_REMOVED] =
-                g_signal_new ("removed",
-                              G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
-                              0,
-                              NULL, NULL, g_cclosure_marshal_VOID__VOID,
-                              G_TYPE_NONE, 0);
 }
 
 static void
diff --git a/panels/network/net-object.h b/panels/network/net-object.h
index 56f03dab5..69078824e 100644
--- a/panels/network/net-object.h
+++ b/panels/network/net-object.h
@@ -46,7 +46,6 @@ const gchar     *net_object_get_title                   (NetObject      *object)
 void             net_object_set_title                   (NetObject      *object,
                                                          const gchar    *title);
 void             net_object_emit_changed                (NetObject      *object);
-void             net_object_emit_removed                (NetObject      *object);
 GtkWidget       *net_object_get_widget                  (NetObject      *object,
                                                          GtkSizeGroup   *heading_size_group);
 
diff --git a/panels/network/net-vpn.c b/panels/network/net-vpn.c
index bb07f67ab..1fcb1b62c 100644
--- a/panels/network/net-vpn.c
+++ b/panels/network/net-vpn.c
@@ -60,13 +60,6 @@ connection_changed_cb (NetVpn *self)
         nm_device_refresh_vpn_ui (self);
 }
 
-static void
-connection_removed_cb (NetVpn *self, NMConnection *connection)
-{
-        if (self->connection == connection)
-                net_object_emit_removed (NET_OBJECT (self));
-}
-
 static GtkWidget *
 vpn_proxy_get_widget (NetObject    *object,
                       GtkSizeGroup *heading_size_group)
@@ -261,10 +254,6 @@ net_vpn_new (NMConnection *connection,
         self->client = g_object_ref (client);
         self->connection = g_object_ref (connection);
 
-        g_signal_connect_object (self->client,
-                                 NM_CLIENT_CONNECTION_REMOVED,
-                                 G_CALLBACK (connection_removed_cb),
-                                 self, G_CONNECT_SWAPPED);
         g_signal_connect_object (connection,
                                  NM_CONNECTION_CHANGED,
                                  G_CALLBACK (connection_changed_cb),


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]