Fix for http://bugs.launchpad.net/bugs/341940; using ellipsizing and tooltip so 
that long APs / device
names can still be read properly on hovering


=== modified file 'ChangeLog'
--- a/ChangeLog 2009-04-04 21:08:22 +0000
+++ b/ChangeLog 2009-04-07 15:43:05 +0000
@@ -1,8 +1,20 @@
+2009-04-07  Alexander Sack  <a...@ubuntu.com>
+
+       Fix long applet menu items - see LP: #341940
+
+       * src/ap-menu-item.c (nm_network_menu_item_init, 
nm_network_menu_item_set_ssid)
+         src/applet-device-cdma.ca (add_connection_items, cdma_add_menu_item)
+         src/applet-device-gsm.c (add_connection_items, gsm_add_menu_item)
+         src/applet-device-wifi.c (wireless_add_menu_item)
+         src/applet-device-wired.c (add_connection_items, 
wired_add_menu_item): use
+               ellipsized labels for menu entries; in turn we set a tooltip 
for APs so
+               users can still read the complete SSID
+
 2009-04-04  Dan Williams  <d...@redhat.com>
 
        * Tag 0.7.1-rc4 (0.7.0.100)
 
 2009-04-04  Dan Williams  <d...@redhat.com>
 
        * src/connection-editor/helpers.c
          src/connection-editor/helpers.h

=== modified file 'src/ap-menu-item.c'
--- a/src/ap-menu-item.c        2008-12-11 22:52:35 +0000
+++ b/src/ap-menu-item.c        2009-04-07 15:28:37 +0000
@@ -46,16 +46,19 @@ nm_network_menu_item_init (NMNetworkMenu
        PangoLanguage * lang;
        int ascent;
 
        gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), 
TRUE);
        item->hbox = gtk_hbox_new (FALSE, 6);
        item->ssid = gtk_label_new (NULL);
        gtk_misc_set_alignment (GTK_MISC (item->ssid), 0.0, 0.5);
 
+       gtk_label_set_max_width_chars (GTK_LABEL (item->ssid), 5);
+       gtk_label_set_ellipsize (GTK_LABEL (item->ssid), PANGO_ELLIPSIZE_END);
+
        item->detail = gtk_image_new ();
 
        gtk_container_add (GTK_CONTAINER (item), item->hbox);
        gtk_box_pack_start (GTK_BOX (item->hbox), item->ssid, TRUE, TRUE, 0);
        gtk_box_pack_start (GTK_BOX (item->hbox), item->detail, FALSE, FALSE, 
0);
 
        item->strength = gtk_progress_bar_new ();
        
@@ -142,18 +145,20 @@ nm_network_menu_item_set_ssid (NMNetwork
 
        g_return_if_fail (item != NULL);
        g_return_if_fail (ssid != NULL);
 
        display_ssid = nm_utils_ssid_to_utf8 ((const char *) ssid->data, 
ssid->len);
        if (!display_ssid) {
                // FIXME: shouldn't happen; always coerce the SSID to 
_something_
                gtk_label_set_text (GTK_LABEL (item->ssid), "<unknown>");
+               gtk_widget_set_tooltip_text (GTK_WIDGET (item->ssid), 
"<unknown>");
        } else {
                gtk_label_set_text (GTK_LABEL (item->ssid), display_ssid);
+               gtk_widget_set_tooltip_text (GTK_WIDGET (item->ssid), 
display_ssid);
                g_free (display_ssid);
        }
 }
 
 guint32
 nm_network_menu_item_get_strength (NMNetworkMenuItem * item)
 {
        g_return_val_if_fail (item != NULL, 0);

=== modified file 'src/applet-device-cdma.c'
--- a/src/applet-device-cdma.c  2009-02-05 19:02:55 +0000
+++ b/src/applet-device-cdma.c  2009-04-07 15:44:13 +0000
@@ -120,22 +120,27 @@ add_connection_items (NMDevice *device,
                       NMApplet *applet)
 {
        GSList *iter;
        CdmaMenuItemInfo *info;
 
        for (iter = connections; iter; iter = g_slist_next (iter)) {
                NMConnection *connection = NM_CONNECTION (iter->data);
                NMSettingConnection *s_con;
-               GtkWidget *item;
+               GtkWidget *item, *label;
 
                s_con = NM_SETTING_CONNECTION (nm_connection_get_setting 
(connection, NM_TYPE_SETTING_CONNECTION));
                item = gtk_check_menu_item_new_with_label 
(nm_setting_connection_get_id (s_con));
                gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM 
(item), TRUE);
 
+               label = gtk_bin_get_child (GTK_BIN (item));
+               gtk_label_set_ellipsize (GTK_LABEL (label), TRUE);
+               gtk_label_set_max_width_chars (GTK_LABEL (label), 30);
+               gtk_widget_set_tooltip_text (item, gtk_label_get_text 
(GTK_LABEL (label)));
+
                if (connection == active)
                        gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM 
(item), TRUE);
 
                info = g_slice_new0 (CdmaMenuItemInfo);
                info->applet = applet;
                info->device = g_object_ref (G_OBJECT (device));
                info->connection = g_object_ref (connection);
 
@@ -249,16 +254,20 @@ cdma_add_menu_item (NMDevice *device,
        g_free (text);
 
        label = gtk_bin_get_child (GTK_BIN (item));
        bold_text = g_markup_printf_escaped ("<span weight=\"bold\">%s</span>",
                                             gtk_label_get_text (GTK_LABEL 
(label)));
        gtk_label_set_markup (GTK_LABEL (label), bold_text);
        g_free (bold_text);
 
+       gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
+       gtk_label_set_max_width_chars (GTK_LABEL (label), 30);
+       gtk_widget_set_tooltip_text (item, gtk_label_get_text (GTK_LABEL 
(label)));
+
        gtk_widget_set_sensitive (item, FALSE);
        gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
        gtk_widget_show (item);
 
        /* Notify user of unmanaged or unavailable device */
        item = nma_menu_device_check_unusable (device, NULL);
        if (item) {
                gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);

=== modified file 'src/applet-device-gsm.c'
--- a/src/applet-device-gsm.c   2009-02-05 19:02:55 +0000
+++ b/src/applet-device-gsm.c   2009-04-07 15:39:46 +0000
@@ -121,22 +121,27 @@ add_connection_items (NMDevice *device,
                       NMApplet *applet)
 {
        GSList *iter;
        GSMMenuItemInfo *info;
 
        for (iter = connections; iter; iter = g_slist_next (iter)) {
                NMConnection *connection = NM_CONNECTION (iter->data);
                NMSettingConnection *s_con;
-               GtkWidget *item;
+               GtkWidget *item, *label;
 
                s_con = NM_SETTING_CONNECTION (nm_connection_get_setting 
(connection, NM_TYPE_SETTING_CONNECTION));
                item = gtk_check_menu_item_new_with_label 
(nm_setting_connection_get_id (s_con));
                gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM 
(item), TRUE);
 
+               label = gtk_bin_get_child (GTK_BIN (item));
+               gtk_label_set_ellipsize (GTK_LABEL (label), TRUE);
+               gtk_label_set_max_width_chars (GTK_LABEL (label), 30);
+               gtk_widget_set_tooltip_text (item, gtk_label_get_text 
(GTK_LABEL (label)));
+
                if (connection == active)
                        gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM 
(item), TRUE);
 
                info = g_slice_new0 (GSMMenuItemInfo);
                info->applet = applet;
                info->device = g_object_ref (G_OBJECT (device));
                info->connection = g_object_ref (connection);
 
@@ -250,16 +255,20 @@ gsm_add_menu_item (NMDevice *device,
        g_free (text);
 
        label = gtk_bin_get_child (GTK_BIN (item));
        bold_text = g_markup_printf_escaped ("<span weight=\"bold\">%s</span>",
                                             gtk_label_get_text (GTK_LABEL 
(label)));
        gtk_label_set_markup (GTK_LABEL (label), bold_text);
        g_free (bold_text);
 
+       gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
+       gtk_label_set_max_width_chars (GTK_LABEL (label), 30);
+       gtk_widget_set_tooltip_text (item, gtk_label_get_text (GTK_LABEL 
(label)));
+
        gtk_widget_set_sensitive (item, FALSE);
        gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
        gtk_widget_show (item);
 
        /* Notify user of unmanaged or unavailable device */
        item = nma_menu_device_check_unusable (device, NULL);
        if (item) {
                gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);

=== modified file 'src/applet-device-wifi.c'
--- a/src/applet-device-wifi.c  2009-02-17 21:54:50 +0000
+++ b/src/applet-device-wifi.c  2009-04-07 15:36:23 +0000
@@ -700,16 +700,20 @@ wireless_add_menu_item (NMDevice *device
        g_free (text);
 
        label = gtk_bin_get_child (GTK_BIN (item));
        bold_text = g_markup_printf_escaped ("<span weight=\"bold\">%s</span>",
                                             gtk_label_get_text (GTK_LABEL 
(label)));
        gtk_label_set_markup (GTK_LABEL (label), bold_text);
        g_free (bold_text);
 
+       gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
+       gtk_label_set_max_width_chars (GTK_LABEL (label), 30);
+       gtk_widget_set_tooltip_text (item, gtk_label_get_text (GTK_LABEL 
(label)));
+
        gtk_widget_set_sensitive (item, FALSE);
        gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
        gtk_widget_show (item);
 
        /* Notify user of unmanaged or unavailable device */
        wireless_enabled = nm_client_wireless_get_enabled (applet->nm_client);
        item = nma_menu_device_check_unusable (device, wireless_enabled ? NULL 
: _("wireless is disabled"));
        if (item) {

=== modified file 'src/applet-device-wired.c'
--- a/src/applet-device-wired.c 2009-02-05 19:02:55 +0000
+++ b/src/applet-device-wired.c 2009-04-07 15:38:58 +0000
@@ -113,23 +113,28 @@ add_connection_items (NMDevice *device,
                       NMApplet *applet)
 {
        GSList *iter;
        WiredMenuItemInfo *info;
 
        for (iter = connections; iter; iter = g_slist_next (iter)) {
                NMConnection *connection = NM_CONNECTION (iter->data);
                NMSettingConnection *s_con;
-               GtkWidget *item;
+               GtkWidget *item, *label;
 
                s_con = NM_SETTING_CONNECTION (nm_connection_get_setting 
(connection, NM_TYPE_SETTING_CONNECTION));
                item = gtk_check_menu_item_new_with_label 
(nm_setting_connection_get_id (s_con));
                gtk_widget_set_sensitive (GTK_WIDGET (item), carrier);
                gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM 
(item), TRUE);
 
+               label = gtk_bin_get_child (GTK_BIN (item));
+               gtk_label_set_ellipsize (GTK_LABEL (label), TRUE);
+               gtk_label_set_max_width_chars (GTK_LABEL (label), 30);
+               gtk_widget_set_tooltip_text (item, gtk_label_get_text 
(GTK_LABEL (label)));
+
                if (connection == active)
                        gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM 
(item), TRUE);
 
                info = g_slice_new0 (WiredMenuItemInfo);
                info->applet = applet;
                info->device = g_object_ref (G_OBJECT (device));
                info->connection = g_object_ref (connection);
 
@@ -214,16 +219,20 @@ wired_add_menu_item (NMDevice *device,
                carrier = nm_device_ethernet_get_carrier (NM_DEVICE_ETHERNET 
(device));
 
        label = gtk_bin_get_child (GTK_BIN (item));
        bold_text = g_markup_printf_escaped ("<span weight=\"bold\">%s</span>",
                                             gtk_label_get_text (GTK_LABEL 
(label)));
        gtk_label_set_markup (GTK_LABEL (label), bold_text);
        g_free (bold_text);
 
+       gtk_label_set_ellipsize (GTK_LABEL (label), TRUE);
+       gtk_label_set_max_width_chars (GTK_LABEL (label), 30);
+       gtk_widget_set_tooltip_text (item, gtk_label_get_text (GTK_LABEL 
(label)));
+
        gtk_widget_set_sensitive (item, FALSE);
        gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
        gtk_widget_show (item);
 
        /* Notify user of unmanaged or unavailable device */
        item = nma_menu_device_check_unusable (device, carrier ? NULL : 
_("disconnected"));
        if (item) {
                gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);





 - Alexander

_______________________________________________
NetworkManager-list mailing list
NetworkManager-list@gnome.org
http://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to