summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-03-30 23:08:24 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2018-03-30 23:08:24 -0400
commit212b5039927842f22295c95f4e0a4f914b243194 (patch)
tree35bd1abb8daf181c9c550d0b551685caf5870e46
parentMerge pull request #1674 from swaywm/layer-input (diff)
downloadsway-212b5039927842f22295c95f4e0a4f914b243194.tar.gz
sway-212b5039927842f22295c95f4e0a4f914b243194.tar.zst
sway-212b5039927842f22295c95f4e0a4f914b243194.zip
Use wlr_surface_point_accepts_input
-rw-r--r--sway/input/cursor.c10
-rw-r--r--sway/tree/container.c9
2 files changed, 3 insertions, 16 deletions
diff --git a/sway/input/cursor.c b/sway/input/cursor.c
index b498a517..7390816f 100644
--- a/sway/input/cursor.c
+++ b/sway/input/cursor.c
@@ -30,16 +30,8 @@ static struct wlr_surface *layer_surface_at(struct sway_output *output,
30 sway_layer->layer_surface->surface; 30 sway_layer->layer_surface->surface;
31 double _sx = ox - sway_layer->geo.x; 31 double _sx = ox - sway_layer->geo.x;
32 double _sy = oy - sway_layer->geo.y; 32 double _sy = oy - sway_layer->geo.y;
33 struct wlr_box box = {
34 .x = sway_layer->geo.x,
35 .y = sway_layer->geo.y,
36 .width = wlr_surface->current->width,
37 .height = wlr_surface->current->height,
38 };
39 // TODO: Test popups/subsurfaces 33 // TODO: Test popups/subsurfaces
40 if (wlr_box_contains_point(&box, ox, oy) && 34 if (wlr_surface_point_accepts_input(wlr_surface, _sx, _sy)) {
41 pixman_region32_contains_point(
42 &wlr_surface->current->input, _sx, _sy, NULL)) {
43 *sx = _sx; 35 *sx = _sx;
44 *sy = _sy; 36 *sy = _sy;
45 return wlr_surface; 37 return wlr_surface;
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 8705edc7..746dbf1f 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -290,8 +290,6 @@ struct sway_container *container_at(struct sway_container *parent,
290 double oy = ly - output_box->y; 290 double oy = ly - output_box->y;
291 double view_sx = ox - swayc->x; 291 double view_sx = ox - swayc->x;
292 double view_sy = oy - swayc->y; 292 double view_sy = oy - swayc->y;
293 int width = swayc->sway_view->surface->current->width;
294 int height = swayc->sway_view->surface->current->height;
295 293
296 switch (sview->type) { 294 switch (sview->type) {
297 case SWAY_WL_SHELL_VIEW: 295 case SWAY_WL_SHELL_VIEW:
@@ -333,11 +331,8 @@ struct sway_container *container_at(struct sway_container *parent,
333 return swayc; 331 return swayc;
334 } 332 }
335 333
336 if (view_sx > 0 && view_sx < width && 334 if (wlr_surface_point_accepts_input(
337 view_sy > 0 && view_sy < height && 335 sview->surface, view_sx, view_sy)) {
338 pixman_region32_contains_point(
339 &sview->surface->current->input,
340 view_sx, view_sy, NULL)) {
341 *sx = view_sx; 336 *sx = view_sx;
342 *sy = view_sy; 337 *sy = view_sy;
343 *surface = swayc->sway_view->surface; 338 *surface = swayc->sway_view->surface;