Przeglądaj źródła

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.

(cherry picked from commit b70919ecd9696198755c2fa326c54f52dc9f355b)
Frank Praznik 11 miesięcy temu
rodzic
commit
25bd4285ab
1 zmienionych plików z 6 dodań i 0 usunięć
  1. 6 0
      src/video/x11/SDL_x11window.c

+ 6 - 0
src/video/x11/SDL_x11window.c

@@ -1574,6 +1574,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;