From 67a10cc1f68c4f8e7b78b1a5b06aceafb4f3f7ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Mon, 23 Apr 2018 16:49:41 +0200 Subject: [PATCH] examples/layer-shell: take an explicit grab on the popup This demonstrates popups can be closed by clicking on the area outside the popup and parent. --- examples/layer-shell.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/layer-shell.c b/examples/layer-shell.c index 0e1d61caf..d9deb7b08 100644 --- a/examples/layer-shell.c +++ b/examples/layer-shell.c @@ -209,7 +209,7 @@ static const struct xdg_popup_listener xdg_popup_listener = { .popup_done = xdg_popup_done, }; -static void create_popup() { +static void create_popup(uint32_t serial) { if (popup) { return; } @@ -227,6 +227,8 @@ static void create_popup() { xdg_positioner_set_anchor(xdg_positioner, XDG_POSITIONER_ANCHOR_BOTTOM_RIGHT); popup = xdg_surface_get_popup(xdg_surface, NULL, xdg_positioner); + xdg_popup_grab(popup, seat, serial); + assert(popup); zwlr_layer_surface_v1_get_popup(layer_surface, popup); @@ -311,7 +313,7 @@ static void wl_pointer_button(void *data, struct wl_pointer *wl_pointer, if (popup_wl_surface) { popup_destroy(); } else { - create_popup(); + create_popup(serial); } } else { buttons++;