diff options
author | emersion <contact@emersion.fr> | 2017-10-04 21:17:16 +0200 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2017-10-04 21:17:16 +0200 |
commit | 09a6d863cf9b6e7fba459ede2b9769e78535b11a (patch) | |
tree | 5d0ce70d18a464c8a3c0993a16bec639c96a41f8 | |
parent | dd07618727bab35daf1e561d40485ec568535ea5 (diff) |
rootston: fix cursor coordinates for rotated subsurfaces
-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; |