diff --git a/include/wlr/xwayland/xwayland.h b/include/wlr/xwayland/xwayland.h index c3704aad1..f36912b71 100644 --- a/include/wlr/xwayland/xwayland.h +++ b/include/wlr/xwayland/xwayland.h @@ -221,6 +221,7 @@ struct wlr_xwayland_surface { struct wl_signal set_startup_id; struct wl_signal set_window_type; struct wl_signal set_hints; + struct wl_signal set_size_hints; struct wl_signal set_decorations; struct wl_signal set_strut_partial; struct wl_signal set_override_redirect; diff --git a/xwayland/xwm.c b/xwayland/xwm.c index 08ce04394..a6b3208ce 100644 --- a/xwayland/xwm.c +++ b/xwayland/xwm.c @@ -239,6 +239,7 @@ static struct wlr_xwayland_surface *xwayland_surface_create( wl_signal_init(&surface->events.set_startup_id); wl_signal_init(&surface->events.set_window_type); wl_signal_init(&surface->events.set_hints); + wl_signal_init(&surface->events.set_size_hints); wl_signal_init(&surface->events.set_decorations); wl_signal_init(&surface->events.set_strut_partial); wl_signal_init(&surface->events.set_override_redirect); @@ -601,6 +602,7 @@ static void xwayland_surface_destroy(struct wlr_xwayland_surface *xsurface) { assert(wl_list_empty(&xsurface->events.set_startup_id.listener_list)); assert(wl_list_empty(&xsurface->events.set_window_type.listener_list)); assert(wl_list_empty(&xsurface->events.set_hints.listener_list)); + assert(wl_list_empty(&xsurface->events.set_size_hints.listener_list)); assert(wl_list_empty(&xsurface->events.set_decorations.listener_list)); assert(wl_list_empty(&xsurface->events.set_strut_partial.listener_list)); assert(wl_list_empty(&xsurface->events.set_override_redirect.listener_list)); @@ -951,6 +953,8 @@ static void read_surface_normal_hints(struct wlr_xwm *xwm, xsurface->size_hints->max_width = -1; xsurface->size_hints->max_height = -1; } + + wl_signal_emit_mutable(&xsurface->events.set_size_hints, NULL); } #define MWM_HINTS_FLAGS_FIELD 0