From d595f65fe208a42392680f9d32c143b37ea2f840 Mon Sep 17 00:00:00 2001 From: Ander Conselvan de Oliveira Date: Wed, 15 Feb 2012 17:02:55 +0200 Subject: [PATCH] compositor: add a way to disable picking of client surfaces 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 --- src/compositor.c | 4 +++- src/compositor.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/compositor.c b/src/compositor.c index 237509f9..31e26d8c 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 966d3f41..6c108055 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.