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 /rootston/desktop.c | |
| parent | dd07618727bab35daf1e561d40485ec568535ea5 (diff) | |
| download | wlroots-09a6d863cf9b6e7fba459ede2b9769e78535b11a.tar.xz | |
rootston: fix cursor coordinates for rotated subsurfaces
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; | 
