From 7c6ac395c98865707c632a72cbc9c708e96b4c2e Mon Sep 17 00:00:00 2001 From: Jonathan Blandford Date: Wed, 22 Sep 2004 17:54:42 +0000 Subject: [PATCH] Wed Sep 22 13:51:45 2004 Jonathan Blandford * panel-applet/menu-info.c (nm_menu_network_draw_indicator): Flip the logic to make this right. * panel-applet/NMWirelessApplet.c (sort_networks_function): sort devices so that wired networks are always first. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@169 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 8 ++++++ panel-applet/NMWirelessApplet.c | 44 +++++++++++++++++++++++++++++++++ panel-applet/menu-info.c | 6 +++-- 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c7fde1fb92..33c3870b93 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Wed Sep 22 13:51:45 2004 Jonathan Blandford + + * panel-applet/menu-info.c (nm_menu_network_draw_indicator): Flip + the logic to make this right. + + * panel-applet/NMWirelessApplet.c (sort_networks_function): sort + devices so that wired networks are always first. + 2004-09-22 * initscript/Debian/.cvsignore: diff --git a/panel-applet/NMWirelessApplet.c b/panel-applet/NMWirelessApplet.c index f44cc351dc..9805a0691e 100644 --- a/panel-applet/NMWirelessApplet.c +++ b/panel-applet/NMWirelessApplet.c @@ -574,6 +574,8 @@ static void nmwa_menu_add_device_item (GtkWidget *menu, NetworkDevice *device, g menu_item = nm_menu_network_new (applet->image_size_group); nm_menu_network_update (NM_MENU_NETWORK (menu_item), device, multiple_devices); + if (applet->active_device == device && device->type == DEVICE_TYPE_WIRED_ETHERNET) + gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item), TRUE); g_object_set_data (G_OBJECT (menu_item), "device", g_strdup (device->nm_device)); g_signal_connect(G_OBJECT (menu_item), "activate", G_CALLBACK(nmwa_menu_item_activate), applet); @@ -643,6 +645,8 @@ static void nmwa_menu_device_add_networks (GtkWidget *menu, NetworkDevice *dev, menu_item = nm_menu_wireless_new (applet->image_size_group, applet->encryption_size_group); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + if (applet->active_device == dev && net->active) + gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item), TRUE); nm_menu_wireless_update (NM_MENU_WIRELESS (menu_item), net, has_encrypted); g_object_set_data (G_OBJECT (menu_item), "network", g_strdup (net->essid)); @@ -656,6 +660,44 @@ static void nmwa_menu_device_add_networks (GtkWidget *menu, NetworkDevice *dev, nmwa_menu_add_custom_essid_item (menu, dev, applet); } +static int +sort_networks_function (gconstpointer a, gconstpointer b) +{ + NetworkDevice *dev_a = (NetworkDevice *) a; + NetworkDevice *dev_b = (NetworkDevice *) b; + char *name_a; + char *name_b; + + if (dev_a->hal_name) + name_a = dev_a->hal_name; + else if (dev_a->nm_name) + name_a = dev_a->nm_name; + else + name_a = ""; + + if (dev_b->hal_name) + name_b = dev_b->hal_name; + else if (dev_b->nm_name) + name_b = dev_b->nm_name; + else + name_b = ""; + + if (dev_a->type == dev_b->type) + { + return strcmp (name_a, name_b); + } + if (dev_a->type == DEVICE_TYPE_WIRED_ETHERNET) + return -1; + if (dev_b->type == DEVICE_TYPE_WIRED_ETHERNET) + return 1; + if (dev_a->type == DEVICE_TYPE_WIRELESS_ETHERNET) + return -1; + if (dev_b->type == DEVICE_TYPE_WIRELESS_ETHERNET) + return 1; + + /* Unknown device types. Sort by name only at this point. */ + return strcmp (name_a, name_b); +} /* * nmwa_menu_add_devices @@ -678,6 +720,8 @@ static void nmwa_menu_add_devices (GtkWidget *menu, NMWirelessApplet *applet) return; } + applet->devices = g_slist_sort (applet->devices, sort_networks_function); + for (element = applet->devices; element; element = element->next) { NetworkDevice *dev = (NetworkDevice *)(element->data); diff --git a/panel-applet/menu-info.c b/panel-applet/menu-info.c index 777d520ca0..87374f12ea 100644 --- a/panel-applet/menu-info.c +++ b/panel-applet/menu-info.c @@ -65,9 +65,11 @@ static void nm_menu_network_draw_indicator (GtkCheckMenuItem *check_menu_item, GdkRectangle *area) { - /* Only draw the indicator if we're an ethernet device */ + /* Don't draw the indicator if we're a wireless device */ if (NM_MENU_NETWORK (check_menu_item)->type == DEVICE_TYPE_WIRELESS_ETHERNET) - GTK_CHECK_MENU_ITEM_CLASS (nm_menu_network_parent_class)->draw_indicator (check_menu_item, area); + return; + + GTK_CHECK_MENU_ITEM_CLASS (nm_menu_network_parent_class)->draw_indicator (check_menu_item, area); } static void