Author: jasper
Date: 2006-08-11 19:42:35 +0000 (Fri, 11 Aug 2006)
New Revision: 22718

Modified:
   xfce4-panel/trunk/plugins/windowlist/windowlist.c
Log:
Use pango_ellipsize and highlight active item. Based on patch by Darren Salt.

Modified: xfce4-panel/trunk/plugins/windowlist/windowlist.c
===================================================================
--- xfce4-panel/trunk/plugins/windowlist/windowlist.c   2006-08-11 18:47:35 UTC 
(rev 22717)
+++ xfce4-panel/trunk/plugins/windowlist/windowlist.c   2006-08-11 19:42:35 UTC 
(rev 22718)
@@ -77,7 +77,10 @@
     {
         utf8 = g_strdup (string);
     }
-    
+
+    if (!utf8)
+        utf8 = g_strdup ("?");
+
     return utf8;
 }
 
@@ -307,28 +310,25 @@
                    gint size)
 {
     GtkWidget *mi;
-    const char *window_name = NULL;
+    char *window_name = NULL;
     GString *label;
     GdkPixbuf *icon = NULL, *tmp = NULL;
-    gboolean truncated = FALSE;
     
-    window_name = netk_window_get_name (window);
+    window_name = menulist_utf8_string (netk_window_get_name (window));
     label = g_string_new (window_name);
     
-    if (label->len >= 20)
-    {
-        g_string_truncate (label, 20);
-        g_string_append (label, " ...");
-       truncated = TRUE;
+    if (netk_window_is_active (window))
+     {
+        g_string_prepend (label, "<b>");
+        g_string_append (label, "</b>");
     }
-
-    if (netk_window_is_minimized (window))
+    else if (netk_window_is_minimized (window))
     {
         g_string_prepend (label, "[");
         g_string_append (label, "]");
     }
     
-    /* Italic fonts are not completely shown */
+    /* hack: italic fonts are not completely shown, otherwise */
     g_string_append (label, " ");
     
     if (wl->show_window_icons)
@@ -338,7 +338,6 @@
     {
         GtkWidget *img;
         gint w, h;
-        char *text;
     
         w = gdk_pixbuf_get_width (icon);
         h = gdk_pixbuf_get_height (icon);
@@ -350,9 +349,7 @@
             icon = tmp;
         }
     
-        text = menulist_utf8_string (label->str);
-        mi = gtk_image_menu_item_new_with_label (text ? text : "?");
-        g_free (text);
+        mi = gtk_image_menu_item_new_with_label (label->str);
         
         img = gtk_image_new_from_pixbuf (icon);
         gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), img);
@@ -362,21 +359,18 @@
     }
     else
     {
-        char *text;
-    
-        text = menulist_utf8_string (label->str);
-        mi = gtk_menu_item_new_with_label (text ? text : "?");
-        g_free (text);
+        mi = gtk_menu_item_new_with_label (label->str);
     }
     
-    if (truncated)
-    {
-        char *text = menulist_utf8_string ((char *)window_name);
-       gtk_tooltips_set_tip (wl->tooltips, mi, text ? text : "?", NULL);
-        g_free (text);
-    }
+    gtk_label_set_use_markup (GTK_LABEL (GTK_BIN (mi)->child), TRUE);
+    gtk_label_set_ellipsize (GTK_LABEL (GTK_BIN (mi)->child), 
+                             PANGO_ELLIPSIZE_END);
+    gtk_label_set_max_width_chars (GTK_LABEL (GTK_BIN (mi)->child), 24);
+    
+    gtk_tooltips_set_tip (wl->tooltips, mi, window_name, NULL);
 
     g_string_free (label, TRUE);
+    g_free (window_name);
     
     return mi;
 }

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to