diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h index 65a23902e..5c2f759ce 100644 --- a/include/sway/tree/view.h +++ b/include/sway/tree/view.h @@ -137,6 +137,7 @@ struct sway_xwayland_view { struct wl_listener unmap; struct wl_listener destroy; + int pending_lx, pending_ly; int pending_width, pending_height; }; diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c index fc4881627..f3264ddcc 100644 --- a/sway/desktop/xwayland.c +++ b/sway/desktop/xwayland.c @@ -160,6 +160,8 @@ static void configure(struct sway_view *view, double lx, double ly, int width, } struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface; + xwayland_view->pending_lx = lx; + xwayland_view->pending_ly = ly; xwayland_view->pending_width = width; xwayland_view->pending_height = height; wlr_xwayland_surface_configure(xsurface, lx, ly, width, height); @@ -264,7 +266,8 @@ static void handle_commit(struct wl_listener *listener, void *data) { } if (view->swayc && container_is_floating(view->swayc)) { view_update_size(view, xsurface->width, xsurface->height); - view_update_position(view, xsurface->x, xsurface->y); + view_update_position(view, + xwayland_view->pending_lx, xwayland_view->pending_ly); } else { view_update_size(view, xwayland_view->pending_width, xwayland_view->pending_height);