summaryrefslogtreecommitdiff
path: root/x11-wm
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2015-06-28 10:33:10 +0000
committerPacho Ramos <pacho@gentoo.org>2015-06-28 10:33:10 +0000
commit09b2b2019886ed6c1e082fb3553e890a030bb901 (patch)
tree22baa1ffa967faabf2f5bc55c7efd34b10194398 /x11-wm
parentx86 stable wrt bug #552220 (diff)
downloadgentoo-2-09b2b2019886ed6c1e082fb3553e890a030bb901.tar.gz
gentoo-2-09b2b2019886ed6c1e082fb3553e890a030bb901.tar.bz2
gentoo-2-09b2b2019886ed6c1e082fb3553e890a030bb901.zip
surface-actor-x11: Make sure to set a size when unredirected (from 3.16 branch). This fixes clicking on stuff in sloppy / mouse mode focus.
(Portage version: 2.2.20/cvs/Linux x86_64, signed Manifest commit with key A188FBD4)
Diffstat (limited to 'x11-wm')
-rw-r--r--x11-wm/mutter/ChangeLog9
-rw-r--r--x11-wm/mutter/files/mutter-3.16.2-size-unredirected.patch151
-rw-r--r--x11-wm/mutter/mutter-3.16.2-r1.ebuild97
3 files changed, 256 insertions, 1 deletions
diff --git a/x11-wm/mutter/ChangeLog b/x11-wm/mutter/ChangeLog
index efed82d9a942..637582a7890c 100644
--- a/x11-wm/mutter/ChangeLog
+++ b/x11-wm/mutter/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for x11-wm/mutter
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-wm/mutter/ChangeLog,v 1.59 2015/06/28 10:00:36 pacho Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-wm/mutter/ChangeLog,v 1.60 2015/06/28 10:33:10 pacho Exp $
+
+*mutter-3.16.2-r1 (28 Jun 2015)
+
+ 28 Jun 2015; Pacho Ramos <pacho@gentoo.org>
+ +files/mutter-3.16.2-size-unredirected.patch, +mutter-3.16.2-r1.ebuild:
+ surface-actor-x11: Make sure to set a size when unredirected (from 3.16
+ branch). This fixes clicking on stuff in sloppy / mouse mode focus.
28 Jun 2015; Pacho Ramos <pacho@gentoo.org> -mutter-3.14.3.ebuild:
Drop old
diff --git a/x11-wm/mutter/files/mutter-3.16.2-size-unredirected.patch b/x11-wm/mutter/files/mutter-3.16.2-size-unredirected.patch
new file mode 100644
index 000000000000..0999ebd582a0
--- /dev/null
+++ b/x11-wm/mutter/files/mutter-3.16.2-size-unredirected.patch
@@ -0,0 +1,151 @@
+From 351f444f9d16a90636feb217b15f0f376bf96d85 Mon Sep 17 00:00:00 2001
+From: "Jasper St. Pierre" <jstpierre@mecheye.net>
+Date: Tue, 23 Jun 2015 16:23:45 -0700
+Subject: surface-actor-x11: Make sure to set a size when unredirected
+
+When we're unredirected, we don't have a pixmap, and thus our allocation
+becomes 0x0. So when events come in, they pass right through our actor,
+going to the one underneath in the stack.
+
+Fix this by having a fallback size on the shaped texture actor when
+we're unredirected, causing it to always have a valid allocation.
+
+This fixes clicking on stuff in sloppy / mouse mode focus.
+
+diff --git a/src/compositor/meta-shaped-texture-private.h b/src/compositor/meta-shaped-texture-private.h
+index 4ee8027..21c6335 100644
+--- a/src/compositor/meta-shaped-texture-private.h
++++ b/src/compositor/meta-shaped-texture-private.h
+@@ -32,6 +32,9 @@
+ ClutterActor *meta_shaped_texture_new (void);
+ void meta_shaped_texture_set_texture (MetaShapedTexture *stex,
+ CoglTexture *texture);
++void meta_shaped_texture_set_fallback_size (MetaShapedTexture *stex,
++ guint fallback_width,
++ guint fallback_height);
+ gboolean meta_shaped_texture_is_obscured (MetaShapedTexture *self);
+
+ #endif
+diff --git a/src/compositor/meta-shaped-texture.c b/src/compositor/meta-shaped-texture.c
+index 163c5e6..8701d1b 100644
+--- a/src/compositor/meta-shaped-texture.c
++++ b/src/compositor/meta-shaped-texture.c
+@@ -86,6 +86,7 @@ struct _MetaShapedTexturePrivate
+ cairo_region_t *unobscured_region;
+
+ guint tex_width, tex_height;
++ guint fallback_width, fallback_height;
+
+ guint create_mipmaps : 1;
+ };
+@@ -136,7 +137,20 @@ set_unobscured_region (MetaShapedTexture *self,
+ g_clear_pointer (&priv->unobscured_region, (GDestroyNotify) cairo_region_destroy);
+ if (unobscured_region)
+ {
+- cairo_rectangle_int_t bounds = { 0, 0, priv->tex_width, priv->tex_height };
++ guint width, height;
++
++ if (priv->texture)
++ {
++ width = priv->tex_width;
++ height = priv->tex_height;
++ }
++ else
++ {
++ width = priv->fallback_width;
++ height = priv->fallback_height;
++ }
++
++ cairo_rectangle_int_t bounds = { 0, 0, width, height };
+ priv->unobscured_region = cairo_region_copy (unobscured_region);
+ cairo_region_intersect_rectangle (priv->unobscured_region, &bounds);
+ }
+@@ -499,16 +513,21 @@ meta_shaped_texture_get_preferred_width (ClutterActor *self,
+ gfloat *natural_width_p)
+ {
+ MetaShapedTexturePrivate *priv;
++ guint width;
+
+ g_return_if_fail (META_IS_SHAPED_TEXTURE (self));
+
+ priv = META_SHAPED_TEXTURE (self)->priv;
+
+- if (min_width_p)
+- *min_width_p = priv->tex_width;
++ if (priv->texture)
++ width = priv->tex_width;
++ else
++ width = priv->fallback_width;
+
++ if (min_width_p)
++ *min_width_p = width;
+ if (natural_width_p)
+- *natural_width_p = priv->tex_width;
++ *natural_width_p = width;
+ }
+
+ static void
+@@ -518,16 +537,21 @@ meta_shaped_texture_get_preferred_height (ClutterActor *self,
+ gfloat *natural_height_p)
+ {
+ MetaShapedTexturePrivate *priv;
++ guint height;
+
+ g_return_if_fail (META_IS_SHAPED_TEXTURE (self));
+
+ priv = META_SHAPED_TEXTURE (self)->priv;
+
+- if (min_height_p)
+- *min_height_p = priv->tex_height;
++ if (priv->texture)
++ height = priv->tex_height;
++ else
++ height = priv->fallback_height;
+
++ if (min_height_p)
++ *min_height_p = height;
+ if (natural_height_p)
+- *natural_height_p = priv->tex_height;
++ *natural_height_p = height;
+ }
+
+ static cairo_region_t *
+@@ -860,6 +884,17 @@ meta_shaped_texture_get_image (MetaShapedTexture *stex,
+ return surface;
+ }
+
++void
++meta_shaped_texture_set_fallback_size (MetaShapedTexture *self,
++ guint fallback_width,
++ guint fallback_height)
++{
++ MetaShapedTexturePrivate *priv = self->priv;
++
++ priv->fallback_width = fallback_width;
++ priv->fallback_height = fallback_height;
++}
++
+ static void
+ meta_shaped_texture_cull_out (MetaCullable *cullable,
+ cairo_region_t *unobscured_region,
+diff --git a/src/compositor/meta-surface-actor-x11.c b/src/compositor/meta-surface-actor-x11.c
+index 4aa7ecd..b50b8f2 100644
+--- a/src/compositor/meta-surface-actor-x11.c
++++ b/src/compositor/meta-surface-actor-x11.c
+@@ -416,6 +416,7 @@ meta_surface_actor_x11_set_size (MetaSurfaceActorX11 *self,
+ int width, int height)
+ {
+ MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
++ MetaShapedTexture *stex = meta_surface_actor_get_texture (META_SURFACE_ACTOR (self));
+
+ if (priv->last_width == width &&
+ priv->last_height == height)
+@@ -424,4 +425,5 @@ meta_surface_actor_x11_set_size (MetaSurfaceActorX11 *self,
+ priv->size_changed = TRUE;
+ priv->last_width = width;
+ priv->last_height = height;
++ meta_shaped_texture_set_fallback_size (stex, width, height);
+ }
+--
+cgit v0.10.2
+
diff --git a/x11-wm/mutter/mutter-3.16.2-r1.ebuild b/x11-wm/mutter/mutter-3.16.2-r1.ebuild
new file mode 100644
index 000000000000..84dca03dcc70
--- /dev/null
+++ b/x11-wm/mutter/mutter-3.16.2-r1.ebuild
@@ -0,0 +1,97 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-wm/mutter/mutter-3.16.2-r1.ebuild,v 1.1 2015/06/28 10:33:10 pacho Exp $
+
+EAPI="5"
+GCONF_DEBUG="yes"
+
+inherit eutils gnome2
+
+DESCRIPTION="GNOME 3 compositing window manager based on Clutter"
+HOMEPAGE="http://git.gnome.org/browse/mutter/"
+
+LICENSE="GPL-2+"
+SLOT="0"
+IUSE="+introspection +kms test wayland"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+
+# libXi-1.7.4 or newer needed per:
+# https://bugzilla.gnome.org/show_bug.cgi?id=738944
+COMMON_DEPEND="
+ >=x11-libs/pango-1.2[X,introspection?]
+ >=x11-libs/cairo-1.10[X]
+ >=x11-libs/gtk+-3.9.11:3[X,introspection?]
+ >=dev-libs/glib-2.36.0:2[dbus]
+ >=media-libs/clutter-1.21.3:1.0[introspection?]
+ >=media-libs/cogl-1.17.1:1.0=[introspection?]
+ >=media-libs/libcanberra-0.26[gtk3]
+ >=x11-libs/startup-notification-0.7
+ >=x11-libs/libXcomposite-0.2
+ >=gnome-base/gsettings-desktop-schemas-3.15.92[introspection?]
+ gnome-base/gnome-desktop:3=
+ >sys-power/upower-0.99:=
+
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ >=x11-libs/libXcomposite-0.2
+ x11-libs/libXcursor
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ >=x11-libs/libXi-1.7.4
+ x11-libs/libXinerama
+ x11-libs/libXrandr
+ x11-libs/libXrender
+ x11-libs/libxcb
+ x11-libs/libxkbfile
+ >=x11-libs/libxkbcommon-0.4.3[X]
+ x11-misc/xkeyboard-config
+
+ gnome-extra/zenity
+
+ introspection? ( >=dev-libs/gobject-introspection-1.42:= )
+ kms? (
+ dev-libs/libinput
+ >=media-libs/clutter-1.20[egl]
+ media-libs/cogl:1.0=[kms]
+ >=media-libs/mesa-10.3[gbm]
+ sys-apps/systemd
+ virtual/libgudev
+ x11-libs/libdrm:= )
+ wayland? (
+ >=dev-libs/wayland-1.5.90
+ >=media-libs/clutter-1.20[wayland]
+ x11-base/xorg-server[wayland] )
+"
+DEPEND="${COMMON_DEPEND}
+ >=dev-util/gtk-doc-am-1.15
+ >=dev-util/intltool-0.41
+ sys-devel/gettext
+ virtual/pkgconfig
+ x11-proto/xextproto
+ x11-proto/xineramaproto
+ x11-proto/xproto
+ test? ( app-text/docbook-xml-dtd:4.5 )
+"
+RDEPEND="${COMMON_DEPEND}
+ !x11-misc/expocity
+"
+
+src_prepare() {
+ # surface-actor-x11: Make sure to set a size when unredirected (from 3.16 branch)
+ epatch "${FILESDIR}"/${P}-size-unredirected.patch
+ gnome2_src_prepare
+}
+
+src_configure() {
+ gnome2_src_configure \
+ --disable-static \
+ --enable-sm \
+ --enable-startup-notification \
+ --enable-verbose-mode \
+ --with-libcanberra \
+ $(use_enable introspection) \
+ $(use_enable kms native-backend) \
+ $(use_enable wayland)
+}