[Xfce4-commits] [xfce/garcon] 01/01: fix: some menu icons are too big (Bug #13785)

noreply at xfce.org noreply at xfce.org
Mon Aug 21 17:40:04 CEST 2017


This is an automated email from the git hooks/post-receive script.

e   r   i   c       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository xfce/garcon.

commit 4387496fe332a50945e7db76bc2196b419656fe3
Author: Stefan Berzl <stefanberzl at gmail.com>
Date:   Mon Aug 21 18:39:07 2017 +0300

    fix: some menu icons are too big (Bug #13785)
    
    Some packages only provide icons in sizes much bigger than the standard
    GTK menu size of 16px.
    
    The clipboard manager qlipper for example provides the following icon:
    /usr/share/icons/hicolor/128x128/apps/qlipper.png
    
    In GTK 3.22.18 the function gtk_image_new_from_icon_name when given
    GTK_ICON_SIZE_MENU as second argument still returns an image with 128x128.
    
    The patch I have supplied uses existing code to scale such an image.
    
    Signed-off-by: Eric Koegel <eric.koegel at gmail.com>
---
 garcon-gtk/garcon-gtk-menu.c | 33 +++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/garcon-gtk/garcon-gtk-menu.c b/garcon-gtk/garcon-gtk-menu.c
index 41990f2..f31a1ed 100644
--- a/garcon-gtk/garcon-gtk-menu.c
+++ b/garcon-gtk/garcon-gtk-menu.c
@@ -650,7 +650,11 @@ garcon_gtk_menu_load_icon (const gchar *icon_name)
   gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &w, &h);
   size = MIN (w, h);
 
-  if (! gtk_icon_theme_has_icon (icon_theme, icon_name))
+  if (gtk_icon_theme_has_icon (icon_theme, icon_name))
+    {
+	  pixbuf = gtk_icon_theme_load_icon (icon_theme, icon_name, size, 0, NULL);;
+    }
+  else
     {
       if (g_path_is_absolute (icon_name))
         {
@@ -684,22 +688,23 @@ garcon_gtk_menu_load_icon (const gchar *icon_name)
               g_free (name);
             }
         }
+    }
 
-      /* Turn the pixbuf into a gtk_image */
-      if (G_LIKELY (pixbuf))
-        {
-          /* scale the pixbuf down if it needs it */
-          GdkPixbuf *tmp = gdk_pixbuf_scale_simple (pixbuf, w, h, GDK_INTERP_BILINEAR);
-          g_object_unref (pixbuf);
-          pixbuf = tmp;
+  /* Turn the pixbuf into a gtk_image */
+  if (G_LIKELY (pixbuf))
+    {
+      /* scale the pixbuf down if it needs it */
+      GdkPixbuf *pixbuf_scaled = gdk_pixbuf_scale_simple (pixbuf, w, h, GDK_INTERP_BILINEAR);
+      g_object_unref (G_OBJECT (pixbuf));
 
-          image = gtk_image_new_from_pixbuf (pixbuf);
-          g_object_unref (G_OBJECT (pixbuf));
-        }
+      image = gtk_image_new_from_pixbuf (pixbuf_scaled);
+      g_object_unref (G_OBJECT (pixbuf_scaled));
+    }
+  else
+    {
+	  /* display the placeholder at least */
+	  image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
     }
-
-  if (image == NULL)
-    image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
 
   return image;
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list