From b6e691b4dbedf13d54a4f2ce12714e9ed5a166c6 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sat, 28 Dec 2013 13:12:17 +0100 Subject: [PATCH] Only offer to disconnect or reassociate when connected --- src/applets/wpa_supplicant.c | 34 +++++++++++++++++++++++++++------- tools/wifibrowser.c | 12 +----------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/applets/wpa_supplicant.c b/src/applets/wpa_supplicant.c index a224a50..b65d631 100644 --- a/src/applets/wpa_supplicant.c +++ b/src/applets/wpa_supplicant.c @@ -816,6 +816,7 @@ static void _clicked_position_menu(GtkMenu * menu, gint * x, gint * y, gboolean * push_in, gpointer data); static void _clicked_unavailable(GtkWidget * menu); /* callbacks */ +static void _clicked_on_disconnect(gpointer data); static void _clicked_on_network_activated(GtkWidget * widget, gpointer data); static void _clicked_on_network_toggled(GtkWidget * widget, gpointer data); static void _clicked_on_reassociate(gpointer data); @@ -844,15 +845,26 @@ static void _clicked_available(WPA * wpa, GtkWidget * menu) /* FIXME summarize the status instead */ _clicked_network_list(wpa, menu); - /* reassociate */ - menuitem = gtk_image_menu_item_new_with_label(_("Reassociate")); + if(wpa->networks_cur >= 0) + { + /* reassociate */ + menuitem = gtk_image_menu_item_new_with_label(_("Reassociate")); #if GTK_CHECK_VERSION(2, 12, 0) - image = gtk_image_new_from_stock(GTK_STOCK_DISCARD, GTK_ICON_SIZE_MENU); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); + image = gtk_image_new_from_stock(GTK_STOCK_DISCARD, + GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), + image); #endif - g_signal_connect_swapped(menuitem, "activate", G_CALLBACK( - _clicked_on_reassociate), wpa); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); + g_signal_connect_swapped(menuitem, "activate", G_CALLBACK( + _clicked_on_reassociate), wpa); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); + /* disconnect */ + menuitem = gtk_image_menu_item_new_from_stock( + GTK_STOCK_DISCONNECT, NULL); + g_signal_connect_swapped(menuitem, "activate", G_CALLBACK( + _clicked_on_disconnect), wpa); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); + } /* rescan */ menuitem = gtk_image_menu_item_new_with_label(_("Rescan")); image = gtk_image_new_from_stock(GTK_STOCK_REFRESH, GTK_ICON_SIZE_MENU); @@ -976,6 +988,14 @@ static void _clicked_unavailable(GtkWidget * menu) gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); } +/* callbacks */ +static void _clicked_on_disconnect(gpointer data) +{ + WPA * wpa = data; + + _wpa_disconnect(wpa); +} + static void _clicked_on_network_activated(GtkWidget * widget, gpointer data) { WPA * wpa = data; diff --git a/tools/wifibrowser.c b/tools/wifibrowser.c index cd07b1c..fbd6acd 100644 --- a/tools/wifibrowser.c +++ b/tools/wifibrowser.c @@ -241,9 +241,6 @@ static void _wifibrowser_on_response(GtkWidget * widget, gint arg1, /* wifibrowser_on_view_button_press */ -/* callbacks */ -static void _clicked_on_network_disconnect(gpointer data); - static gboolean _wifibrowser_on_view_button_press(GtkWidget * widget, GdkEventButton * event, gpointer data) { @@ -270,7 +267,7 @@ static gboolean _wifibrowser_on_view_button_press(GtkWidget * widget, gtk_menu_shell_append(GTK_MENU_SHELL(menu), widget); widget = gtk_image_menu_item_new_from_stock(GTK_STOCK_DISCONNECT, NULL); g_signal_connect_swapped(widget, "activate", G_CALLBACK( - _clicked_on_network_disconnect), wpa); + _clicked_on_disconnect), wpa); gtk_menu_shell_append(GTK_MENU_SHELL(menu), widget); gtk_widget_show_all(menu); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, event->button, @@ -281,13 +278,6 @@ static gboolean _wifibrowser_on_view_button_press(GtkWidget * widget, return TRUE; } -static void _clicked_on_network_disconnect(gpointer data) -{ - WPA * wpa = data; - - _wpa_disconnect(wpa); -} - /* wifibrowser_on_view_popup_menu */ static gboolean _wifibrowser_on_view_popup_menu(GtkWidget * widget,