Created attachment 7268 A screenshot of the issue 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. 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; }
Created attachment 7269 The patch for scaling the icons It's probably better here than in the comments.
Stefan Berzl referenced this bugreport in commit 4387496fe332a50945e7db76bc2196b419656fe3 fix: some menu icons are too big (Bug #13785) https://git.xfce.org/xfce/garcon/commit?id=4387496fe332a50945e7db76bc2196b419656fe3
Pushed your patch, thanks!
(In reply to Eric Koegel from comment #3) > Pushed your patch, thanks! This patch breaks quicklaunch default applications icons (buttons have disappeared).
(In reply to Olivier Duchateau from comment #4) > (In reply to Eric Koegel from comment #3) > > Pushed your patch, thanks! > > This patch breaks quicklaunch default applications icons (buttons have > disappeared). I find workaround for Xfdashboard (where quicklaunch buttons have disappeared) and now everything works fine!
How do you suppose the scalling of the images has anything to do with the new return type from libxfconf? The change in still hasn't permeated into every part of the software. The settings-editor for example can't display arrays because it also assumes the old type.
I upgraded my system from Xubuntu 18.04 64 bit x86 to version 18.10. Since version 18.10 I have this issue :(
On the same system I also have this issue: https://bugzilla.xfce.org/show_bug.cgi?id=14774.
Here is some information which may help to reproduce my problem. I have not installed Firefox via Synaptic but instead downloaded it via the mozilla page. I only had to extract the compressed file and then launch the executable. So my Firefox is installed under /home/myname/bin/firefox-release/. Then I created a .desktop file under /home/myname/.local/share/applications/ and set the icon name to "firefox quantum". This icon can be found under /home/myname/.local/share/icons/hicolor/128x128/apps/ and has a width and height of 128 pixels.