xwayland: add xdg-toplevel listener

So that when running rootful, the compositor can close the Xwayland
window using the xdg-toplevel protocol.

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Olivier Fourdan 2022-04-29 10:45:01 +02:00
parent 7a517f3967
commit f31f059934

View File

@ -540,6 +540,28 @@ static const struct wl_surface_listener surface_listener = {
xwl_window_surface_leave
};
static void
xdg_toplevel_handle_configure(void *data,
struct xdg_toplevel *xdg_toplevel,
int32_t width,
int32_t height,
struct wl_array *states)
{
}
static void
xdg_toplevel_handle_close(void *data,
struct xdg_toplevel *xdg_toplevel)
{
DebugF("Terminating on compositor request");
GiveUp(0);
}
static const struct xdg_toplevel_listener xdg_toplevel_listener = {
xdg_toplevel_handle_configure,
xdg_toplevel_handle_close,
};
static Bool
xwl_create_root_surface(struct xwl_window *xwl_window)
{
@ -567,6 +589,10 @@ xwl_create_root_surface(struct xwl_window *xwl_window)
xdg_surface_add_listener(xwl_window->xdg_surface,
&xdg_surface_listener, xwl_window);
xdg_toplevel_add_listener(xwl_window->xdg_toplevel,
&xdg_toplevel_listener,
NULL);
xwl_window_rootful_update_title(xwl_window);
wl_surface_commit(xwl_window->surface);