[PATCH 4/7] compositor: add a way to disable picking of client surfaces

Ander Conselvan de Oliveira ander.conselvan.de.oliveira at intel.com
Wed Feb 15 07:02:55 PST 2012


Surfaces like drag'n'drop icons shouldn't receive events as a normal
surface but are still created by the client so add a way for the
compositor to enable or disable the picking of a client surface.

Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
---
 src/compositor.c |    4 +++-
 src/compositor.h |    1 +
 2 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/compositor.c b/src/compositor.c
index 237509f..31e26d8 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -544,7 +544,7 @@ weston_compositor_pick_surface(struct weston_compositor *compositor,
 	struct weston_surface *surface;
 
 	wl_list_for_each(surface, &compositor->surface_list, link) {
-		if (surface->surface.resource.client == NULL)
+		if (!surface->pickable)
 			continue;
 		weston_surface_from_global(surface, x, y, sx, sy);
 		if (0 <= *sx && *sx < surface->geometry.width &&
@@ -1270,6 +1270,8 @@ compositor_create_surface(struct wl_client *client,
 		(void (**)(void)) &surface_interface;
 	surface->surface.resource.data = surface;
 
+	surface->pickable = 1;
+
 	wl_client_add_resource(client, &surface->surface.resource);
 }
 
diff --git a/src/compositor.h b/src/compositor.h
index 966d3f4..6c10805 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -251,6 +251,7 @@ struct weston_surface {
 	uint32_t alpha;
 	uint32_t visual;
 	int overlapped;
+	int pickable;
 
 	/* Surface geometry state, mutable.
 	 * If you change anything, set dirty = 1.
-- 
1.7.4.1



More information about the wayland-devel mailing list