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.
diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c
index 31e739c..c96b900 100644
--- a/src/video/x11/SDL_x11events.c
+++ b/src/video/x11/SDL_x11events.c
@@ -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);
diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c
index 5574c6e..d56d928 100644
--- a/src/video/x11/SDL_x11window.c
+++ b/src/video/x11/SDL_x11window.c
@@ -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