aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Crisci <tony@dubstepdish.com>2017-09-21 13:48:46 -0400
committerTony Crisci <tony@dubstepdish.com>2017-09-21 13:48:46 -0400
commit675a71dce789eb6aa3ba7e38ba137c9e4c6a5f07 (patch)
treeb09ee14d32e8460526b16bed2b690b80e9dce2ae
parent7a3edf6e6218b79e47541a0d5ebed64e094055b4 (diff)
compositor.c: determine xdg position by window geom
-rw-r--r--examples/compositor.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/examples/compositor.c b/examples/compositor.c
index 24013c52..7c4bed09 100644
--- a/examples/compositor.c
+++ b/examples/compositor.c
@@ -67,6 +67,7 @@ struct sample_state {
struct example_xdg_surface_v6 {
struct wlr_xdg_surface_v6 *surface;
+ // position of the wlr_surface in the layout
struct {
int lx;
int ly;
@@ -338,11 +339,14 @@ static struct wlr_xdg_surface_v6 *example_xdg_surface_at(
wl_list_for_each(xdg_surface, &xdg_client->surfaces, link) {
struct example_xdg_surface_v6 *esurface = xdg_surface->data;
- if (sample->cursor->x >= esurface->position.lx &&
- sample->cursor->y >= esurface->position.ly &&
- sample->cursor->x <= esurface->position.lx +
+ double window_x = esurface->position.lx + xdg_surface->geometry->x;
+ double window_y = esurface->position.ly + xdg_surface->geometry->y;
+
+ if (sample->cursor->x >= window_x &&
+ sample->cursor->y >= window_y &&
+ sample->cursor->x <= window_x +
xdg_surface->geometry->width &&
- sample->cursor->y <= esurface->position.ly +
+ sample->cursor->y <= window_y +
xdg_surface->geometry->height) {
return xdg_surface;
}