diff options
author | Adel Gadllah <adel.gadllah@gmail.com> | 2014-02-28 16:38:07 +0100 |
---|---|---|
committer | Adel Gadllah <adel.gadllah@gmail.com> | 2014-02-28 18:26:55 +0100 |
commit | 463318ac4c495c789337a00591edfdbe0d57cca0 (patch) | |
tree | eb3b2a1a6a8c5c63c29b27c44b9e6a1f57508ec4 /src | |
parent | 3ee63d5a99ea374f262502e6eb82daae14f80e42 (diff) | |
download | mutter-463318ac4c495c789337a00591edfdbe0d57cca0.tar.gz |
meta-shaped-texture: Check if the parent has mapped clones as well
When the WindowActor has mapped clones we should ignore
the unobscured region as well, so we need to walk up and check it
as well.
https://bugzilla.gnome.org/show_bug.cgi?id=725180
Diffstat (limited to 'src')
-rw-r--r-- | src/compositor/meta-shaped-texture.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/compositor/meta-shaped-texture.c b/src/compositor/meta-shaped-texture.c index 67b146e01..082b1b1ae 100644 --- a/src/compositor/meta-shaped-texture.c +++ b/src/compositor/meta-shaped-texture.c @@ -32,6 +32,7 @@ #include "meta-texture-tower.h" #include "meta-shaped-texture-private.h" +#include "meta-window-actor-private.h" #include <clutter/clutter.h> #include <cogl/cogl.h> @@ -597,8 +598,18 @@ static cairo_region_t * effective_unobscured_region (MetaShapedTexture *self) { MetaShapedTexturePrivate *priv = self->priv; + ClutterActor *parent = clutter_actor_get_parent (CLUTTER_ACTOR (self)); - return clutter_actor_has_mapped_clones (CLUTTER_ACTOR (self)) ? NULL : priv->unobscured_region; + if (clutter_actor_has_mapped_clones (CLUTTER_ACTOR (self))) + return NULL; + + while (parent && !META_IS_WINDOW_ACTOR (parent)) + parent = clutter_actor_get_parent (parent); + + if (parent && clutter_actor_has_mapped_clones (parent)) + return NULL; + + return priv->unobscured_region; } gboolean |