diff options
Diffstat (limited to 'rootston/desktop.c')
-rw-r--r-- | rootston/desktop.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/rootston/desktop.c b/rootston/desktop.c index a216f7f9..1e7d1171 100644 --- a/rootston/desktop.c +++ b/rootston/desktop.c @@ -93,17 +93,6 @@ struct roots_view *view_at(struct roots_desktop *desktop, double lx, double ly, double view_sx = lx - view->x; double view_sy = ly - view->y; - double sub_x, sub_y; - struct wlr_subsurface *subsurface = - subsurface_at(view->wlr_surface, view_sx, view_sy, &sub_x, &sub_y); - - if (subsurface) { - *sx = view_sx - sub_x; - *sy = view_sy - sub_y; - *surface = subsurface->surface; - return view; - } - struct wlr_box box; view_get_input_bounds(view, &box); if (view->rotation != 0.0) { @@ -117,6 +106,16 @@ struct roots_view *view_at(struct roots_desktop *desktop, double lx, double ly, view_sy = (double)box.height/2 + ry; } + double sub_x, sub_y; + struct wlr_subsurface *subsurface = + subsurface_at(view->wlr_surface, view_sx, view_sy, &sub_x, &sub_y); + if (subsurface) { + *sx = view_sx - sub_x; + *sy = view_sy - sub_y; + *surface = subsurface->surface; + return view; + } + if (wlr_box_contains_point(&box, view_sx, view_sy)) { *sx = view_sx; *sy = view_sy; |