Skip to content

Commit

Permalink
x11: send move/resize events when waiting on fullscreen change.
Browse files Browse the repository at this point in the history
Otherwise we ignore the Configure/etc events when they come in because
the window is already in an identical state as far as SDL is concerned.

Fixes libsdl-org#5593.

May also fix:
Issue libsdl-org#5572.
Issue libsdl-org#5595.
  • Loading branch information
icculus committed May 19, 2022
1 parent b798e49 commit 9edd411
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions src/video/x11/SDL_x11window.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "../SDL_pixels_c.h"
#include "../../events/SDL_keyboard_c.h"
#include "../../events/SDL_mouse_c.h"
#include "../../events/SDL_events_c.h"

#include "SDL_x11video.h"
#include "SDL_x11mouse.h"
Expand Down Expand Up @@ -1385,12 +1386,19 @@ X11_SetWindowFullscreenViaWM(_THIS, SDL_Window * window, SDL_VideoDisplay * _dis
attrs.x, attrs.y, &x, &y, &childReturn);

if (!caught_x11_error) {
if ((x != orig_x) || (y != orig_y) || (attrs.width != orig_w) || (attrs.height != orig_h)) {
window->x = x;
window->y = y;
window->w = attrs.width;
window->h = attrs.height;
break; /* window moved, time to go. */
SDL_bool window_changed = SDL_FALSE;
if ((x != orig_x) || (y != orig_y)) {
SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_MOVED, x, y);
window_changed = SDL_TRUE;
}

if ((attrs.width != orig_w) || (attrs.height != orig_h)) {
SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_RESIZED, attrs.width, attrs.height);
window_changed = SDL_TRUE;
}

if (window_changed) {
break; /* window changed, time to go. */
}
}

Expand Down

0 comments on commit 9edd411

Please sign in to comment.