summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Miranda <andre@andreldm.com>2021-09-06 18:17:48 -0300
committerLubomir Rintel <lkundrak@v3.sk>2021-11-03 11:29:57 +0100
commite500cfa7b7f6adef74b89d8cdea15ca03a44a0b9 (patch)
tree2951ce40850c89b82ec8c82c942dd39fb6a08058
parentd6ecc28e103dca12e5fdbc60699fba9a2ca58be0 (diff)
downloadnetwork-manager-applet-e500cfa7b7f6adef74b89d8cdea15ca03a44a0b9.tar.gz
applet: Move all wifi entries to a submenu
This avoids the having the menu being redimensioned when wifi networks are refreshed causing the VPN submenu to be placed out of reach unless scrolling down. https://gitlab.gnome.org/GNOME/network-manager-applet/-/merge_requests/81 https://gitlab.gnome.org/GNOME/network-manager-applet/-/merge_requests/103
-rw-r--r--src/applet-device-wifi.c64
1 files changed, 18 insertions, 46 deletions
diff --git a/src/applet-device-wifi.c b/src/applet-device-wifi.c
index 8419bc43..8de2f667 100644
--- a/src/applet-device-wifi.c
+++ b/src/applet-device-wifi.c
@@ -814,6 +814,7 @@ wifi_add_menu_item (NMDevice *device,
GSList *menu_items = NULL; /* All menu items we'll be adding */
NMNetworkMenuItem *item, *active_item = NULL;
GtkWidget *widget;
+ GtkWidget *subitem;
wdev = NM_DEVICE_WIFI (device);
aps = nm_device_wifi_get_access_points (wdev);
@@ -883,58 +884,29 @@ wifi_add_menu_item (NMDevice *device,
if (active_item)
menu_items = g_slist_remove (menu_items, active_item);
- /* Sort all the rest of the menu items for the top-level menu */
- menu_items = g_slist_sort (menu_items, sort_toplevel);
+ subitem = gtk_menu_item_new_with_mnemonic (_("_Available networks"));
if (g_slist_length (menu_items)) {
- GSList *submenu_items = NULL;
- GSList *topmenu_items = NULL;
- guint32 num_for_toplevel = 5;
-
- applet_menu_item_add_complex_separator_helper (menu, applet, _("Available"));
-
- if (g_slist_length (menu_items) == (num_for_toplevel + 1))
- num_for_toplevel++;
-
- /* Add the first 5 APs (or 6 if there are only 6 total) from the sorted
- * toplevel list.
- */
- for (iter = menu_items; iter && num_for_toplevel; iter = g_slist_next (iter)) {
- topmenu_items = g_slist_append (topmenu_items, iter->data);
- num_for_toplevel--;
- submenu_items = iter->next;
- }
- topmenu_items = g_slist_sort (topmenu_items, sort_by_name);
-
- for (iter = topmenu_items; iter; iter = g_slist_next (iter)) {
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), GTK_WIDGET (iter->data));
- gtk_widget_show_all (GTK_WIDGET (iter->data));
- }
- g_slist_free (topmenu_items);
- topmenu_items = NULL;
-
- /* If there are any submenu items, make a submenu for those */
- if (submenu_items) {
- GtkWidget *subitem, *submenu;
- GSList *sorted_subitems;
+ GtkWidget *submenu;
+ GSList *sorted_subitems;
- subitem = gtk_menu_item_new_with_mnemonic (_("More networks"));
- submenu = gtk_menu_new ();
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (subitem), submenu);
+ submenu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (subitem), submenu);
- /* Sort the subitems alphabetically */
- sorted_subitems = g_slist_copy (submenu_items);
- sorted_subitems = g_slist_sort (sorted_subitems, sort_by_name);
+ /* Sort the subitems alphabetically and by importance */
+ sorted_subitems = g_slist_copy (menu_items);
+ sorted_subitems = g_slist_sort (sorted_subitems, sort_by_name);
+ sorted_subitems = g_slist_sort (sorted_subitems, sort_toplevel);
- /* And add the rest to the submenu */
- for (iter = sorted_subitems; iter; iter = g_slist_next (iter))
- gtk_menu_shell_append (GTK_MENU_SHELL (submenu), GTK_WIDGET (iter->data));
- g_slist_free (sorted_subitems);
+ /* Add menu items */
+ for (iter = sorted_subitems; iter; iter = g_slist_next (iter))
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), GTK_WIDGET (iter->data));
+ g_slist_free (sorted_subitems);
+ } else
+ gtk_widget_set_sensitive (subitem, FALSE);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), subitem);
- gtk_widget_show_all (subitem);
- }
- }
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), subitem);
+ gtk_widget_show_all (subitem);
out:
g_slist_free (menu_items);