[gnome-control-center] wifi: Update the list when AP properties change
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] wifi: Update the list when AP properties change
- Date: Sun, 21 Jan 2018 15:03:53 +0000 (UTC)
commit 823c4868a68bdb422dac05c7004d79f02fc5ae81
Author: Xiang Fan <sfanxiang gmail com>
Date: Thu Aug 24 23:37:26 2017 +0800
wifi: Update the list when AP properties change
The best AP can be chosen even if no AP is added/removed.
https://bugzilla.gnome.org/show_bug.cgi?id=786736
panels/network/net-device-wifi.c | 61 ++++++++++++++++++++++++++++++++++----
1 files changed, 55 insertions(+), 6 deletions(-)
---
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index 290f7cd..2a765da 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -252,13 +252,59 @@ get_ap_security_string (NMAccessPoint *ap)
}
static void
-net_device_wifi_access_point_changed (NMDeviceWifi *nm_device_wifi,
+nm_access_point_property_changed (NMAccessPoint *ap,
+ GParamSpec *pspec,
+ NetDeviceWifi *device_wifi)
+{
+ nm_device_wifi_refresh_ui (device_wifi);
+}
+
+static void
+nm_device_wifi_connect_access_points (NMDeviceWifi *nm_device_wifi,
+ NetDeviceWifi *net_device_wifi)
+{
+ guint i;
+ const GPtrArray *aps;
+ NMAccessPoint *ap;
+
+ aps = nm_device_wifi_get_access_points (nm_device_wifi);
+ if (!aps)
+ return;
+
+ for (i = 0; i < aps->len; i++) {
+ ap = NM_ACCESS_POINT (g_ptr_array_index (aps, i));
+
+ /* avoid redundant signal handlers */
+ if (g_signal_handler_find (ap, G_SIGNAL_MATCH_FUNC,
+ 0, 0, NULL,
+ &nm_access_point_property_changed,
+ NULL) != 0)
+ continue;
+
+ g_signal_connect_object (ap, "notify",
+ G_CALLBACK (nm_access_point_property_changed),
+ net_device_wifi, 0);
+ }
+
+}
+
+static void
+net_device_wifi_access_point_added (NMDeviceWifi *nm_device_wifi,
+ NMAccessPoint *ap,
+ gpointer user_data)
+{
+ NetDeviceWifi *device_wifi = NET_DEVICE_WIFI (user_data);
+
+ populate_ap_list (device_wifi);
+ nm_device_wifi_connect_access_points (nm_device_wifi, device_wifi);
+}
+
+static void
+net_device_wifi_access_point_removed (NMDeviceWifi *nm_device_wifi,
NMAccessPoint *ap,
gpointer user_data)
{
- NetDeviceWifi *device_wifi;
-
- device_wifi = NET_DEVICE_WIFI (user_data);
+ NetDeviceWifi *device_wifi = NET_DEVICE_WIFI (user_data);
populate_ap_list (device_wifi);
}
@@ -1487,12 +1533,15 @@ net_device_wifi_constructed (GObject *object)
nm_device = net_device_get_nm_device (NET_DEVICE (device_wifi));
g_signal_connect_object (nm_device, "access-point-added",
- G_CALLBACK (net_device_wifi_access_point_changed),
+ G_CALLBACK (net_device_wifi_access_point_added),
device_wifi, 0);
g_signal_connect_object (nm_device, "access-point-removed",
- G_CALLBACK (net_device_wifi_access_point_changed),
+ G_CALLBACK (net_device_wifi_access_point_removed),
device_wifi, 0);
+ nm_device_wifi_connect_access_points (NM_DEVICE_WIFI (nm_device),
+ device_wifi);
+
/* only enable the button if the user can create a hotspot */
widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder,
"start_hotspot_button"));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]