From bd54e24f4c5f49b09d0e655d1a238371e781b4eb Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 31 Jan 2023 15:47:20 +0100 Subject: [PATCH] xdg-shell: reset added/committed flag on unmap When a client attaches a NULL buffer to its wl_surface, it's unmapped. This resets the xdg_surface in its initial state. An extra NULL commit makes the compositor send an initial configure event. Note, wlr_xdg_toplevel.added is separate from wlr_xdg_surface.added. Closes: https://github.com/swaywm/sway/issues/7397 (cherry picked from commit e69dd909f71c13c72c9d317465e75ad1f65b514e) --- types/xdg_shell/wlr_xdg_popup.c | 2 ++ types/xdg_shell/wlr_xdg_toplevel.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/types/xdg_shell/wlr_xdg_popup.c b/types/xdg_shell/wlr_xdg_popup.c index 184c03fdd..fa99acd04 100644 --- a/types/xdg_shell/wlr_xdg_popup.c +++ b/types/xdg_shell/wlr_xdg_popup.c @@ -449,6 +449,8 @@ void unmap_xdg_popup(struct wlr_xdg_popup *popup) { popup->seat = NULL; } + + popup->committed = false; } void destroy_xdg_popup(struct wlr_xdg_popup *popup) { diff --git a/types/xdg_shell/wlr_xdg_toplevel.c b/types/xdg_shell/wlr_xdg_toplevel.c index a3d7f2efa..0df2b73f0 100644 --- a/types/xdg_shell/wlr_xdg_toplevel.c +++ b/types/xdg_shell/wlr_xdg_toplevel.c @@ -521,6 +521,8 @@ void unmap_xdg_toplevel(struct wlr_xdg_toplevel *toplevel) { toplevel->requested.fullscreen = false; toplevel->requested.maximized = false; toplevel->requested.minimized = false; + + toplevel->added = false; } void destroy_xdg_toplevel(struct wlr_xdg_toplevel *toplevel) {