aboutsummaryrefslogtreecommitdiff
path: root/x11-wm/xfce4-desktop
diff options
context:
space:
mode:
authorOlivier Duchateau <olivierd@FreeBSD.org>2013-03-18 14:46:25 +0000
committerOlivier Duchateau <olivierd@FreeBSD.org>2013-03-18 14:46:25 +0000
commit7a38fc5fabb86f115757d711b55847645620186c (patch)
tree5aa542455be4346a8327fce0267ba0341fcb22b4 /x11-wm/xfce4-desktop
parent3279e157acbf4f0ddbf4ef4e32cedd272ba11244 (diff)
downloadports-7a38fc5fabb86f115757d711b55847645620186c.tar.gz
ports-7a38fc5fabb86f115757d711b55847645620186c.zip
Force to scale XPM icons with recent update of graphics/gdk-pixbuf2
While here, - Use USES=pathfix instead of gnomehack
Notes
Notes: svn path=/head/; revision=314575
Diffstat (limited to 'x11-wm/xfce4-desktop')
-rw-r--r--x11-wm/xfce4-desktop/Makefile4
-rw-r--r--x11-wm/xfce4-desktop/files/patch-src__xfdesktop-app-menu-item.c78
2 files changed, 81 insertions, 1 deletions
diff --git a/x11-wm/xfce4-desktop/Makefile b/x11-wm/xfce4-desktop/Makefile
index a693701fa55c..6e500bfd722a 100644
--- a/x11-wm/xfce4-desktop/Makefile
+++ b/x11-wm/xfce4-desktop/Makefile
@@ -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 \
diff --git a/x11-wm/xfce4-desktop/files/patch-src__xfdesktop-app-menu-item.c b/x11-wm/xfce4-desktop/files/patch-src__xfdesktop-app-menu-item.c
new file mode 100644
index 000000000000..93df27c4ec19
--- /dev/null
+++ b/x11-wm/xfce4-desktop/files/patch-src__xfdesktop-app-menu-item.c
@@ -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);