aboutsummaryrefslogtreecommitdiff
path: root/x11-toolkits/gtk30
diff options
context:
space:
mode:
authorKoop Mast <kwm@FreeBSD.org>2015-07-28 19:26:30 +0000
committerKoop Mast <kwm@FreeBSD.org>2015-07-28 19:26:30 +0000
commita8f152f37c55bdf4167a54873f8cc889b6fcbcca (patch)
treeb17d96c562ca3cbd03c93d6b88b7b24472b4c9d0 /x11-toolkits/gtk30
parentdc0d7ef725e524f22bc2832704392fd449d1e4fc (diff)
downloadports-a8f152f37c55bdf4167a54873f8cc889b6fcbcca.tar.gz
ports-a8f152f37c55bdf4167a54873f8cc889b6fcbcca.zip
Notes
Diffstat (limited to 'x11-toolkits/gtk30')
-rw-r--r--x11-toolkits/gtk30/Makefile9
-rw-r--r--x11-toolkits/gtk30/distinfo4
-rw-r--r--x11-toolkits/gtk30/files/patch-72139881
3 files changed, 88 insertions, 6 deletions
diff --git a/x11-toolkits/gtk30/Makefile b/x11-toolkits/gtk30/Makefile
index 0aa9bb6ef12b..21a9368a5bf3 100644
--- a/x11-toolkits/gtk30/Makefile
+++ b/x11-toolkits/gtk30/Makefile
@@ -1,10 +1,9 @@
# Created by: Vanilla I. Shu <vanilla@MinJe.com.TW>
# $FreeBSD$
-# $MCom: ports/trunk/x11-toolkits/gtk30/Makefile 20051 2014-11-10 09:39:43Z gusi $
# Please keep gtk30 and x11-themes/gnome-themes-standard minor version in sync
PORTNAME= gtk
-PORTVERSION= 3.14.12
+PORTVERSION= 3.14.15
PORTREVISION?= 0
CATEGORIES= x11-toolkits
MASTER_SITES= GNOME/sources/gtk+/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/}
@@ -37,14 +36,16 @@ USE_GNOME= atk gdkpixbuf2 gtk-update-icon-cache \
USES+= gettext gmake libtool pathfix perl5 pkgconfig
USE_XORG= xext xrender x11 xinerama xi xrandr xcursor xfixes xdamage \
xcomposite
-CONFIGURE_ARGS= --enable-gtk2-dependency --disable-packagekit \
+CONFIGURE_ARGS= --enable-gtk2-dependency \
+ --disable-wayland-backend \
+ --enable-x11-backend \
--enable-introspection
CPPFLAGS+= -I${LOCALBASE}/include -fno-omit-frame-pointer
LIBS+= -L${LOCALBASE}/lib
INSTALLS_ICONS= yes
INSTALL_TARGET= install-strip
-LIBVERSION= 0.1400.12
+LIBVERSION= 0.1400.15
PLIST_SUB+= LIBVERSION=${LIBVERSION}
GLIB_SCHEMAS= org.gtk.Demo.gschema.xml \
diff --git a/x11-toolkits/gtk30/distinfo b/x11-toolkits/gtk30/distinfo
index 4a9bf88bd829..f9bf3a410d9f 100644
--- a/x11-toolkits/gtk30/distinfo
+++ b/x11-toolkits/gtk30/distinfo
@@ -1,2 +1,2 @@
-SHA256 (gnome3/gtk+-3.14.12.tar.xz) = 3aaf1f04b6393695a726b4bbe09ed9c9ddb0f779edc8238f803d5a4f10a2f549
-SIZE (gnome3/gtk+-3.14.12.tar.xz) = 15784084
+SHA256 (gnome3/gtk+-3.14.15.tar.xz) = 3ac87659112ced9e5ee5bd55d055faa881aafd040f26ca40b0d8ba0fa6509c83
+SIZE (gnome3/gtk+-3.14.15.tar.xz) = 15896532
diff --git a/x11-toolkits/gtk30/files/patch-721398 b/x11-toolkits/gtk30/files/patch-721398
new file mode 100644
index 000000000000..ad6204648efd
--- /dev/null
+++ b/x11-toolkits/gtk30/files/patch-721398
@@ -0,0 +1,81 @@
+From 55edc81c10742bf3e410168f6dc317f8aca05938 Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen@redhat.com>
+Date: Mon, 27 Jul 2015 23:18:27 -0400
+Subject: x11: Make selection handling work across screens
+
+When dealing with selection events, we might see windows from
+other screens in the requestor field. The current x11 backend
+code fails to wrap these in a foreign GdkWindow, since we
+don't have the corresponding GdkScreen anymore. Work around
+this by creating such 'foreign screens' on demand. We still
+maintain the 1:1 relation between the display and the screen
+returned by gdk_display_get_default_screen().
+
+https://bugzilla.gnome.org/show_bug.cgi?id=721398
+
+diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
+index f2824b6..9bb27ee 100644
+--- gdk/x11/gdkdisplay-x11.c
++++ gdk/x11/gdkdisplay-x11.c
+@@ -1959,6 +1959,7 @@ gdk_x11_display_finalize (GObject *object)
+
+ /* Free all GdkScreens */
+ g_object_unref (display_x11->screen);
++ g_list_free_full (display_x11->screens, g_object_unref);
+
+ g_free (display_x11->startup_notification_id);
+
+@@ -2035,12 +2036,36 @@ GdkScreen *
+ _gdk_x11_display_screen_for_xrootwin (GdkDisplay *display,
+ Window xrootwin)
+ {
+- GdkScreen *screen = gdk_display_get_default_screen (display);
++ GdkScreen *screen;
++ XWindowAttributes attrs;
++ gboolean result;
++ GdkX11Display *display_x11;
++ GList *l;
++
++ screen = gdk_display_get_default_screen (display);
+
+ if (GDK_SCREEN_XROOTWIN (screen) == xrootwin)
+ return screen;
+
+- return NULL;
++ display_x11 = GDK_X11_DISPLAY (display);
++
++ for (l = display_x11->screens; l; l = l->next)
++ {
++ screen = l->data;
++ if (GDK_SCREEN_XROOTWIN (screen) == xrootwin)
++ return screen;
++ }
++
++ gdk_x11_display_error_trap_push (display);
++ result = XGetWindowAttributes (display_x11->xdisplay, xrootwin, &attrs);
++ if (gdk_x11_display_error_trap_pop (display) || !result)
++ return NULL;
++
++ screen = _gdk_x11_screen_new (display, XScreenNumberOfScreen (attrs.screen));
++
++ display_x11->screens = g_list_prepend (display_x11->screens, screen);
++
++ return screen;
+ }
+
+ /**
+diff --git a/gdk/x11/gdkdisplay-x11.h b/gdk/x11/gdkdisplay-x11.h
+index aadf255..9b78f61 100644
+--- gdk/x11/gdkdisplay-x11.h
++++ gdk/x11/gdkdisplay-x11.h
+@@ -39,6 +39,7 @@ struct _GdkX11Display
+ GdkDisplay parent_instance;
+ Display *xdisplay;
+ GdkScreen *screen;
++ GList *screens;
+
+ GSource *event_source;
+
+--
+cgit v0.10.2
+