From b70919ecd9696198755c2fa326c54f52dc9f355b Mon Sep 17 00:00:00 2001
From: Frank Praznik <[EMAIL REDACTED]>
Date: Fri, 23 May 2025 11:44:36 -0400
Subject: [PATCH] x11: Assume the window was mapped after showing
Not all window managers send a MapNotify or PropertyNotify event when the window is shown, so assume that it was mapped and set the flag accordingly.
---
src/video/x11/SDL_x11window.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c
index 6dd7ce02eb067..cd10c8f8b2419 100644
--- a/src/video/x11/SDL_x11window.c
+++ b/src/video/x11/SDL_x11window.c
@@ -1584,6 +1584,12 @@ void X11_ShowWindow(SDL_VideoDevice *_this, SDL_Window *window)
X11_PumpEvents(_this);
data->size_move_event_flags = 0;
+ /* A MapNotify or PropertyNotify may not have arrived, so ensure that the shown event is dispatched
+ * to apply pending state before clearing the flag.
+ */
+ SDL_SendWindowEvent(window, SDL_EVENT_WINDOW_SHOWN, 0, 0);
+ data->was_shown = true;
+
// If a configure event was received (type is non-zero), send the final window size and coordinates.
if (data->last_xconfigure.type) {
int x, y;