[network-manager-applet/bg/menu-wifi-scan-bgo774848: 1/2] applet: request wifi scan when menu is opened



commit ffdb34377179d48fa1fe6fda18f3744491213c1d
Author: Beniamino Galvani <bgalvani redhat com>
Date:   Fri Jan 6 11:20:27 2017 +0100

    applet: request wifi scan when menu is opened

 src/applet.c |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/src/applet.c b/src/applet.c
index b702f8e..9a05be6 100644
--- a/src/applet.c
+++ b/src/applet.c
@@ -66,6 +66,24 @@ G_DEFINE_TYPE (NMApplet, nma, G_TYPE_APPLICATION)
 
 /********************************************************************/
 
+static void
+applet_request_wifi_scan (NMApplet *applet, gpointer unused)
+{
+       const GPtrArray *devices;
+       NMDevice *device;
+       int i;
+
+       g_debug ("requesting wifi scan");
+
+       /* Request scan for all wifi devices */
+       devices = nm_client_get_devices (applet->nm_client);
+       for (i = 0; devices && i < devices->len; i++) {
+               device = g_ptr_array_index (devices, i);
+               if (NM_IS_DEVICE_WIFI (device))
+                       nm_device_wifi_request_scan ((NMDeviceWifi *) device, NULL, NULL);
+       }
+}
+
 static inline NMADeviceClass *
 get_device_class (NMDevice *device, NMApplet *applet)
 {
@@ -1991,12 +2009,18 @@ applet_update_indicator_menu (gpointer user_data)
 #ifdef WITH_APPINDICATOR
        GtkWidget *menu;
 
+       menu = (GtkWidget *) app_indicator_get_menu (applet->app_indicator);
+       if (menu)
+               g_signal_handlers_disconnect_by_func (menu, applet_request_wifi_scan, applet);
+
        menu = nma_context_menu_create (applet);
        nma_menu_show_cb (menu, applet);
        nma_menu_add_separator_item (menu);
        nma_context_menu_update (applet);
 
        app_indicator_set_menu (applet->app_indicator, GTK_MENU (menu));
+
+       g_signal_connect_swapped (menu, "show", G_CALLBACK (applet_request_wifi_scan), applet);
 #endif /* WITH_APPINDICATOR */
 
        applet->update_menu_id = 0;
@@ -3084,6 +3108,8 @@ status_icon_activate_cb (GtkStatusIcon *icon, NMApplet *applet)
         */
        applet_clear_notify (applet);
 
+       applet_request_wifi_scan (applet, NULL);
+
        /* Kill any old menu */
        if (applet->menu)
                g_object_unref (applet->menu);


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