Force to scale XPM icons with recent update of graphics/gdk-pixbuf2
While here, - Use USES=pathfix instead of gnomehack
This commit is contained in:
parent
3279e157ac
commit
7a38fc5fab
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=314575
2 changed files with 81 additions and 1 deletions
|
@ -4,6 +4,7 @@
|
|||
|
||||
PORTNAME= xfce4-desktop
|
||||
PORTVERSION= 4.10.2
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= x11-wm xfce
|
||||
MASTER_SITES= ${MASTER_SITE_XFCE}
|
||||
MASTER_SITE_SUBDIR= src/xfce/xfdesktop/${PORTVERSION:R}
|
||||
|
@ -21,9 +22,10 @@ GNU_CONFIGURE= yes
|
|||
INSTALLS_ICONS= yes
|
||||
USE_BZIP2= yes
|
||||
USE_GMAKE= yes
|
||||
USE_GNOME= glib20 gnomehack gtk20 intltool intlhack desktopfileutils
|
||||
USE_GNOME= glib20 gtk20 intltool intlhack desktopfileutils
|
||||
USE_XFCE= configenv garcon libmenu libutil libexo xfconf
|
||||
USE_PKGCONFIG= build
|
||||
USES= pathfix
|
||||
USE_XORG= x11 sm
|
||||
|
||||
CONFIGURE_ARGS+=--enable-gio-unix \
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
--- ./src/xfdesktop-app-menu-item.c.orig 2013-03-02 16:40:19.000000000 +0000
|
||||
+++ ./src/xfdesktop-app-menu-item.c 2013-03-18 09:50:38.000000000 +0000
|
||||
@@ -28,6 +28,10 @@
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
+#ifdef HAVE_MATH_H
|
||||
+#include <math.h>
|
||||
+#endif
|
||||
+
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include <libxfce4util/libxfce4util.h>
|
||||
@@ -169,8 +173,11 @@
|
||||
xfdesktop_app_menu_item_set_icon(XfdesktopAppMenuItem *app_menu_item)
|
||||
{
|
||||
const gchar *icon_name;
|
||||
- gint w, h, size;
|
||||
+ gint w, h, size, new_size;
|
||||
+ gint src_w, src_h;
|
||||
+ gdouble wratio, hratio;
|
||||
GdkPixbuf *pixbuf = NULL;
|
||||
+ GdkPixbuf *dest;
|
||||
GtkWidget *image = NULL;
|
||||
GtkIconTheme *icon_theme;
|
||||
gchar *p, *name = NULL;
|
||||
@@ -187,7 +194,7 @@
|
||||
image = gtk_image_new_from_icon_name(icon_name, GTK_ICON_SIZE_MENU);
|
||||
else {
|
||||
if (g_path_is_absolute(icon_name)) {
|
||||
- pixbuf = gdk_pixbuf_new_from_file_at_scale(icon_name, w, h, TRUE, NULL);
|
||||
+ pixbuf = gdk_pixbuf_new_from_file(icon_name, NULL);
|
||||
} else {
|
||||
/* try to lookup names like application.png in the theme */
|
||||
p = strrchr(icon_name, '.');
|
||||
@@ -206,11 +213,41 @@
|
||||
}
|
||||
|
||||
if(name) {
|
||||
- pixbuf = gdk_pixbuf_new_from_file_at_scale(name, w, h, TRUE, NULL);
|
||||
+ pixbuf = gdk_pixbuf_new_from_file(name, NULL);
|
||||
g_free(name);
|
||||
}
|
||||
}
|
||||
|
||||
+ /* scale the pixbuf */
|
||||
+ if(G_LIKELY(pixbuf)) {
|
||||
+ /* 24x24 pixels looks good */
|
||||
+ new_size = MIN(24, 24);
|
||||
+
|
||||
+ src_w = gdk_pixbuf_get_width(pixbuf);
|
||||
+ src_h = gdk_pixbuf_get_height(pixbuf);
|
||||
+
|
||||
+ if(src_w > 24 || src_h > 24) {
|
||||
+ /* calculate the new dimensions */
|
||||
+ wratio = (gdouble) src_w / (gdouble) new_size;
|
||||
+ hratio = (gdouble) src_h / (gdouble) new_size;
|
||||
+
|
||||
+ if(hratio == wratio) {
|
||||
+ w = rint(src_w / hratio);
|
||||
+ h = rint(src_h / hratio);
|
||||
+ }
|
||||
+ else if(hratio > wratio)
|
||||
+ w = rint(src_w / hratio);
|
||||
+ else
|
||||
+ h = rint(src_h / wratio);
|
||||
+
|
||||
+ dest = gdk_pixbuf_scale_simple(pixbuf,
|
||||
+ MAX(w, 1), MAX(h, 1), GDK_INTERP_BILINEAR);
|
||||
+
|
||||
+ g_object_unref(G_OBJECT(pixbuf));
|
||||
+ pixbuf = dest;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/* Turn the pixbuf into a gtk_image */
|
||||
if(G_LIKELY(pixbuf)) {
|
||||
image = gtk_image_new_from_pixbuf(pixbuf);
|
Loading…
Reference in a new issue