Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Mar 2013 14:46:25 +0000 (UTC)
From:      Olivier Duchateau <olivierd@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r314575 - in head/x11-wm/xfce4-desktop: . files
Message-ID:  <201303181446.r2IEkPZ6078706@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: olivierd
Date: Mon Mar 18 14:46:25 2013
New Revision: 314575
URL: http://svnweb.freebsd.org/changeset/ports/314575

Log:
  Force to scale XPM icons with recent update of graphics/gdk-pixbuf2
  
  While here,
  - Use USES=pathfix instead of gnomehack

Added:
  head/x11-wm/xfce4-desktop/files/patch-src__xfdesktop-app-menu-item.c   (contents, props changed)
Modified:
  head/x11-wm/xfce4-desktop/Makefile

Modified: head/x11-wm/xfce4-desktop/Makefile
==============================================================================
--- head/x11-wm/xfce4-desktop/Makefile	Mon Mar 18 14:46:13 2013	(r314574)
+++ head/x11-wm/xfce4-desktop/Makefile	Mon Mar 18 14:46:25 2013	(r314575)
@@ -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 \

Added: head/x11-wm/xfce4-desktop/files/patch-src__xfdesktop-app-menu-item.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11-wm/xfce4-desktop/files/patch-src__xfdesktop-app-menu-item.c	Mon Mar 18 14:46:25 2013	(r314575)
@@ -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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303181446.r2IEkPZ6078706>