diff --git a/include/wlr/xwayland/xwayland.h b/include/wlr/xwayland/xwayland.h index cb9e35f05..ff08796c9 100644 --- a/include/wlr/xwayland/xwayland.h +++ b/include/wlr/xwayland/xwayland.h @@ -169,6 +169,8 @@ struct wlr_xwayland_surface { struct wl_signal set_strut_partial; struct wl_signal set_override_redirect; struct wl_signal set_geometry; + /* can be used to set initial maximized/fullscreen geometry */ + struct wl_signal map_request; struct wl_signal ping_timeout; } events; diff --git a/xwayland/xwm.c b/xwayland/xwm.c index 2f80062a1..6322b8597 100644 --- a/xwayland/xwm.c +++ b/xwayland/xwm.c @@ -218,8 +218,9 @@ static struct wlr_xwayland_surface *xwayland_surface_create( wl_signal_init(&surface->events.set_decorations); wl_signal_init(&surface->events.set_strut_partial); wl_signal_init(&surface->events.set_override_redirect); - wl_signal_init(&surface->events.ping_timeout); wl_signal_init(&surface->events.set_geometry); + wl_signal_init(&surface->events.map_request); + wl_signal_init(&surface->events.ping_timeout); xcb_get_geometry_reply_t *geometry_reply = xcb_get_geometry_reply(xwm->xcb_conn, geometry_cookie, NULL); @@ -1123,6 +1124,7 @@ static void xwm_handle_map_request(struct wlr_xwm *xwm, return; } + wl_signal_emit_mutable(&xsurface->events.map_request, NULL); xcb_map_window(xwm->xcb_conn, ev->window); }