diff options
author | Pacho Ramos <pacho@gentoo.org> | 2015-06-28 10:33:10 +0000 |
---|---|---|
committer | Pacho Ramos <pacho@gentoo.org> | 2015-06-28 10:33:10 +0000 |
commit | 09b2b2019886ed6c1e082fb3553e890a030bb901 (patch) | |
tree | 22baa1ffa967faabf2f5bc55c7efd34b10194398 /x11-wm | |
parent | x86 stable wrt bug #552220 (diff) | |
download | gentoo-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/ChangeLog | 9 | ||||
-rw-r--r-- | x11-wm/mutter/files/mutter-3.16.2-size-unredirected.patch | 151 | ||||
-rw-r--r-- | x11-wm/mutter/mutter-3.16.2-r1.ebuild | 97 |
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) +} |