x11: Try to keep SDL_WINDOW_FULLSCREEN* in sync with window manager.

So if Gnome/KDE/etc have a keyboard shortcut or titlebar decoration to
make any window go fullscreen (with the _NET_WM_FULLSCREEN flag on the
_NET_WM_STATE property), we update the SDL window flag.

Fixes #5390.
This commit is contained in:
Ryan C. Gordon 2022-04-05 23:04:19 -04:00
parent eb660e862c
commit 0249df9d96
No known key found for this signature in database
GPG Key ID: FA148B892AB48044
2 changed files with 8 additions and 1 deletions

View File

@ -1434,6 +1434,13 @@ X11_DispatchEvent(_THIS, XEvent *xevent)
}
}
if (changed & SDL_WINDOW_FULLSCREEN_DESKTOP) {
/* FULLSCREEN_DESKTOP encompasses two bits: SDL_WINDOW_FULLSCREEN, plus a bit to note it's FULLSCREEN_DESKTOP */
const Uint32 fsmasked = flags & SDL_WINDOW_FULLSCREEN_DESKTOP;
data->window->flags &= ~SDL_WINDOW_FULLSCREEN_DESKTOP;
data->window->flags |= fsmasked;
}
if (changed & SDL_WINDOW_MAXIMIZED) {
if (flags & SDL_WINDOW_MAXIMIZED) {
SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_MAXIMIZED, 0, 0);

View File

@ -222,7 +222,7 @@ X11_GetNetWMState(_THIS, Window xwindow)
}
if (fullscreen == 1) {
flags |= SDL_WINDOW_FULLSCREEN;
flags |= SDL_WINDOW_FULLSCREEN; /* !!! FIXME: arguably this is more like FULLSCREEN_DESKTOP...? */
}
/* If the window is unmapped, numItems will be zero and _NET_WM_STATE_HIDDEN