diff options
| author | emersion <contact@emersion.fr> | 2018-03-31 11:30:15 -0400 | 
|---|---|---|
| committer | emersion <contact@emersion.fr> | 2018-03-31 11:30:15 -0400 | 
| commit | 98b67e2399df70d1e8354d5641744d1730a60189 (patch) | |
| tree | 74db4df45a42e0c652b2dc98f2e9f5e2c9e7560c /sway | |
| parent | 0f7936735cfc8224f9926199b7e807e95d86d900 (diff) | |
| download | sway-98b67e2399df70d1e8354d5641744d1730a60189.tar.xz | |
Fix xwayland configure in set_size
Diffstat (limited to 'sway')
| -rw-r--r-- | sway/desktop/output.c | 10 | ||||
| -rw-r--r-- | sway/desktop/xwayland.c | 6 | ||||
| -rw-r--r-- | sway/input/cursor.c | 32 | 
3 files changed, 26 insertions, 22 deletions
| diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 24c0bf40..0d706c52 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -247,11 +247,13 @@ static void render_output(struct sway_output *output, struct timespec *when,  			continue;  		} +		struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface; +  		const struct wlr_box view_box = { -			.x = view->wlr_xwayland_surface->x, -			.y = view->wlr_xwayland_surface->y, -			.width = view->wlr_xwayland_surface->width, -			.height = view->wlr_xwayland_surface->height, +			.x = xsurface->x, +			.y = xsurface->y, +			.width = xsurface->width, +			.height = xsurface->height,  		};  		struct wlr_box intersection;  		if (!wlr_box_intersection(&view_box, output_box, &intersection)) { diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c index 5f9c99a3..bbaa88c8 100644 --- a/sway/desktop/xwayland.c +++ b/sway/desktop/xwayland.c @@ -41,7 +41,7 @@ static void set_size(struct sway_view *view, int width, int height) {  	view->sway_xwayland_surface->pending_height = height;  	struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface; -	wlr_xwayland_surface_configure(xsurface, view->swayc->x, view->swayc->y, +	wlr_xwayland_surface_configure(xsurface, xsurface->x, xsurface->y,  		width, height);  } @@ -151,7 +151,7 @@ static void handle_map(struct wl_listener *listener, void *data) {  	view_damage_whole(sway_surface->view);  } -static void handle_configure_request(struct wl_listener *listener, void *data) { +static void handle_request_configure(struct wl_listener *listener, void *data) {  	struct sway_xwayland_surface *sway_surface =  		wl_container_of(listener, sway_surface, request_configure);  	struct wlr_xwayland_surface_configure_event *ev = data; @@ -206,7 +206,7 @@ void handle_xwayland_surface(struct wl_listener *listener, void *data) {  	wl_signal_add(&xsurface->events.request_configure,  		&sway_surface->request_configure); -	sway_surface->request_configure.notify = handle_configure_request; +	sway_surface->request_configure.notify = handle_request_configure;  	wl_signal_add(&xsurface->events.unmap, &sway_surface->unmap);  	sway_surface->unmap.notify = handle_unmap; diff --git a/sway/input/cursor.c b/sway/input/cursor.c index 74af6426..67776f8f 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c @@ -50,21 +50,23 @@ static struct sway_container *container_at_cursor(struct sway_cursor *cursor,  	struct wl_list *unmanaged = &root_container.sway_root->unmanaged_views;  	struct sway_view *view;  	wl_list_for_each_reverse(view, unmanaged, unmanaged_view_link) { -		if (view->type == SWAY_XWAYLAND_VIEW) { -			struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface; -			struct wlr_box box = { -				.x = xsurface->x, -				.y = xsurface->y, -				.width = xsurface->width, -				.height = xsurface->height, -			}; - -			if (wlr_box_contains_point(&box, cursor->x, cursor->y)) { -				*surface = xsurface->surface; -				*sx = cursor->x - box.x; -				*sy = cursor->y - box.y; -				return NULL; -			} +		if (view->type != SWAY_XWAYLAND_VIEW) { +			continue; +		} + +		struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface; +		struct wlr_box box = { +			.x = xsurface->x, +			.y = xsurface->y, +			.width = xsurface->width, +			.height = xsurface->height, +		}; + +		if (wlr_box_contains_point(&box, cursor->x, cursor->y)) { +			*surface = xsurface->surface; +			*sx = cursor->x - box.x; +			*sy = cursor->y - box.y; +			return NULL;  		}  	} | 
