On Thu, 2005-06-16 at 21:30 -0400, Robert Love wrote:

> Let's break these up into two patches, since I think some of these
> changes are not contentious whatsoever.

Meanwhile, this patch includes the following changes:

        - Don't center the "Wireless Networks" menu item.
        - Actually make the "Wireless Networks" menu item inactive.
          I realize this was done deliberately (with the nasty signal
          hack), but the thing /is/ insensitive, unselectable, and a
          label, not a menu item.  The greyed-out look is in.
        - Use gtk_menu_new_with_label(), not the previous complications.
        - Consolidate a few seemingly related functions, all called from
          the same place once, into one.
        - Draw a horizontal separator above the "Wireless Networks"
          label.
        - Misc. cleanup: net patch change is -36 lines!

If needed, we can spur debate, bring in experts, vote, draw straws, or
consult the tea leaves on this one.  I think it is the right way to go.

Best,

        Robert Love

Index: gnome/applet/applet.c
===================================================================
RCS file: /cvs/gnome/NetworkManager/gnome/applet/applet.c,v
retrieving revision 1.12
diff -u -u -r1.12 applet.c
--- gnome/applet/applet.c       12 Jun 2005 14:35:58 -0000      1.12
+++ gnome/applet/applet.c       16 Jun 2005 20:12:00 -0000
@@ -1298,16 +1298,17 @@
 
                case DEVICE_TYPE_WIRELESS_ETHERNET:
                {
-                       NMWirelessMenuItem *item = wireless_menu_item_new ();
-                       GtkMenuItem *gtk_item = wireless_menu_item_get_item 
(item);
-                    wireless_menu_item_update (item, device, n_devices);
-
-                       g_object_set_data (G_OBJECT (gtk_item), "device", 
g_strdup (network_device_get_nm_path (device)));
-                       g_object_set_data (G_OBJECT (gtk_item), "nm-item-data", 
item);
-                       g_signal_connect(G_OBJECT (gtk_item), "activate", 
G_CALLBACK (nmwa_menu_item_activate), applet);
+                       NMWirelessMenuItem *item = wireless_menu_item_new 
(device, n_devices);
 
-                       gtk_menu_shell_append (GTK_MENU_SHELL (menu), 
GTK_WIDGET (gtk_item));
-                       gtk_widget_show (GTK_WIDGET (gtk_item));
+                       g_object_set_data (G_OBJECT (item->menu_item), 
"device", g_strdup (network_device_get_nm_path (device)));
+                       g_object_set_data (G_OBJECT (item->menu_item), 
"nm-item-data", item);
+                       g_signal_connect (G_OBJECT (item->menu_item), 
"activate", G_CALLBACK (nmwa_menu_item_activate), applet);
+
+                       gtk_menu_shell_append (GTK_MENU_SHELL (menu), 
GTK_WIDGET (item->separator));
+                       gtk_widget_show (GTK_WIDGET (item->separator));
+
+                       gtk_menu_shell_append (GTK_MENU_SHELL (menu), 
GTK_WIDGET (item->menu_item));
+                       gtk_widget_show (GTK_WIDGET (item->menu_item));
                        break;
                }
 
Index: gnome/applet/menu-items.c
===================================================================
RCS file: /cvs/gnome/NetworkManager/gnome/applet/menu-items.c,v
retrieving revision 1.2
diff -u -u -r1.2 menu-items.c
--- gnome/applet/menu-items.c   6 May 2005 02:58:05 -0000       1.2
+++ gnome/applet/menu-items.c   16 Jun 2005 20:12:00 -0000
@@ -101,76 +101,34 @@
                gtk_widget_set_sensitive (GTK_WIDGET (item->check_item), 
network_device_get_link (dev));
 }
 
-
-/****************************************************************
- *   Wireless menu item
- ****************************************************************/
-
-struct NMWirelessMenuItem
-{
-       GtkMenuItem     *menu_item;
-       GtkLabel                *label;
-};
-
-
-static gboolean label_expose (GtkWidget *widget)
+NMWirelessMenuItem *wireless_menu_item_new (NetworkDevice *dev, const gint 
n_devices)
 {
-       /* Bad hack to make the label draw normally, instead of insensitive. */
-       widget->state = GTK_STATE_NORMAL;
-  
-       return FALSE;
-}
-
-NMWirelessMenuItem *wireless_menu_item_new (void)
-{
-       NMWirelessMenuItem      *item = g_malloc0 (sizeof (NMWirelessMenuItem));
-
-       g_return_val_if_fail (item != NULL, NULL);
-
-       item->menu_item = GTK_MENU_ITEM (gtk_menu_item_new ());
-
-       /* Make sure it looks slightly different if the label determines the 
width of the widget */
-       item->label = GTK_LABEL (gtk_label_new (NULL));
-       gtk_misc_set_padding (GTK_MISC (item->label), 6, 0);
-       g_signal_connect (G_OBJECT (item->label), "expose-event", G_CALLBACK 
(label_expose), NULL);
-
-       gtk_container_add (GTK_CONTAINER (item->menu_item), GTK_WIDGET 
(item->label));
-       gtk_widget_show (GTK_WIDGET (item->label));
-
-       gtk_widget_set_sensitive (GTK_WIDGET (item->menu_item), FALSE);
-
-       return item;
-}
-
-GtkMenuItem *wireless_menu_item_get_item (NMWirelessMenuItem *item)
-{
-       g_return_val_if_fail (item != NULL, NULL);
-
-       return item->menu_item;
-}
-
-void wireless_menu_item_update (NMWirelessMenuItem *item, NetworkDevice *dev, 
const gint n_devices)
-{
-       char *text;
-       const char *dev_name;
+       NMWirelessMenuItem *item = g_malloc0 (sizeof (NMWirelessMenuItem));
        gint n_essids;
+       char *text;
 
-       g_return_if_fail (dev != NULL);
-       g_return_if_fail (item != NULL);
+       g_return_val_if_fail (dev != NULL, NULL);
+       g_return_val_if_fail (item != NULL, NULL);
        g_assert (network_device_is_wireless (dev));
 
-       n_essids = network_device_get_num_wireless_networks (dev);
-       dev_name = network_device_get_desc (dev) ? network_device_get_desc 
(dev) : network_device_get_iface (dev);
+       item->separator = gtk_separator_menu_item_new ();
 
+       n_essids = network_device_get_num_wireless_networks (dev);
        if (n_devices > 1)
+       {
+               const char *dev_name = network_device_get_desc (dev) ? 
network_device_get_desc (dev) : network_device_get_iface (dev);
                text = g_strdup_printf (ngettext ("Wireless Network (%s)", 
"Wireless Networks (%s)", n_essids), dev_name);
+       }
        else
                text = g_strdup (ngettext ("Wireless Network", "Wireless 
Networks", n_essids));
 
-       gtk_label_set_markup (GTK_LABEL (item->label), text);
+       item->menu_item = GTK_MENU_ITEM (gtk_menu_item_new_with_label (text));
+       gtk_widget_set_sensitive (GTK_WIDGET (item->menu_item), FALSE);
+
        g_free (text);
-}
 
+       return item;
+}
 
 /****************************************************************
  *   Wireless Network menu item
Index: gnome/applet/menu-items.h
===================================================================
RCS file: /cvs/gnome/NetworkManager/gnome/applet/menu-items.h,v
retrieving revision 1.1
diff -u -u -r1.1 menu-items.h
--- gnome/applet/menu-items.h   27 Apr 2005 18:05:02 -0000      1.1
+++ gnome/applet/menu-items.h   16 Jun 2005 20:12:00 -0000
@@ -27,15 +27,20 @@
 
 
 typedef struct NMWiredMenuItem NMWiredMenuItem;
-typedef struct NMWirelessMenuItem NMWirelessMenuItem;
 typedef struct NMNetworkMenuItem NMNetworkMenuItem;
 
+typedef struct NMWirelessMenuItem
+{
+       GtkWidget               *separator;
+       GtkMenuItem     *menu_item;
+       GtkLabel                *label;
+} NMWirelessMenuItem;
 
 NMWiredMenuItem        *wired_menu_item_new (void);
 GtkCheckMenuItem       *wired_menu_item_get_check_item (NMWiredMenuItem *item);
 void                            wired_menu_item_update (NMWiredMenuItem *item, 
NetworkDevice *dev, const gint n_devices);
 
-NMWirelessMenuItem     *wireless_menu_item_new (void);
+NMWirelessMenuItem     *wireless_menu_item_new (NetworkDevice *dev, const gint 
nr_devices);
 GtkMenuItem            *wireless_menu_item_get_item (NMWirelessMenuItem *item);
 void                            wireless_menu_item_update (NMWirelessMenuItem 
*item, NetworkDevice *dev, const gint n_devices);
 
_______________________________________________
NetworkManager-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to