Merge pull request #918 from emersion/xwayland-unmapped-request-configure

xwayland: forward configure events to compositor when unmapped
This commit is contained in:
Drew DeVault 2018-04-27 10:49:31 +02:00 committed by GitHub
commit 04af09862a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -717,34 +717,22 @@ static void xwm_handle_configure_request(struct wlr_xwm *xwm,
xcb_configure_request_event_t *ev) { xcb_configure_request_event_t *ev) {
wlr_log(L_DEBUG, "XCB_CONFIGURE_REQUEST (%u) [%ux%u+%d,%d]", ev->window, wlr_log(L_DEBUG, "XCB_CONFIGURE_REQUEST (%u) [%ux%u+%d,%d]", ev->window,
ev->width, ev->height, ev->x, ev->y); ev->width, ev->height, ev->x, ev->y);
struct wlr_xwayland_surface *xsurface = lookup_surface(xwm, ev->window); struct wlr_xwayland_surface *surface = lookup_surface(xwm, ev->window);
if (xsurface == NULL) { if (surface == NULL) {
return; return;
} }
// TODO: handle ev->{parent,sibling}? // TODO: handle ev->{parent,sibling}?
if (xsurface->surface == NULL) { struct wlr_xwayland_surface_configure_event wlr_event = {
// Surface has not been mapped yet .surface = surface,
wlr_xwayland_surface_configure(xsurface, ev->x, ev->y, .x = ev->x,
ev->width, ev->height); .y = ev->y,
} else { .width = ev->width,
struct wlr_xwayland_surface_configure_event *wlr_event = .height = ev->height,
calloc(1, sizeof(struct wlr_xwayland_surface_configure_event)); };
if (wlr_event == NULL) {
return;
}
wlr_event->surface = xsurface; wlr_signal_emit_safe(&surface->events.request_configure, &wlr_event);
wlr_event->x = ev->x;
wlr_event->y = ev->y;
wlr_event->width = ev->width;
wlr_event->height = ev->height;
wlr_signal_emit_safe(&xsurface->events.request_configure, wlr_event);
free(wlr_event);
}
} }
static void xwm_handle_configure_notify(struct wlr_xwm *xwm, static void xwm_handle_configure_notify(struct wlr_xwm *xwm,