Skip to content

Commit

Permalink
x11: better fix for the previous commit's fullscreen vs maximized issue.
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed Feb 20, 2016
1 parent a4627c5 commit 2436ca2
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions src/video/x11/SDL_x11window.c
Expand Up @@ -1186,6 +1186,22 @@ X11_SetWindowFullscreenViaWM(_THIS, SDL_Window * window, SDL_VideoDisplay * _dis

X11_XSendEvent(display, RootWindow(display, displaydata->screen), 0,
SubstructureNotifyMask | SubstructureRedirectMask, &e);

/* Fullscreen windows sometimes end up being marked maximized by
window managers. Force it back to how we expect it to be. */
if (!fullscreen && ((window->flags & SDL_WINDOW_MAXIMIZED) == 0)) {
SDL_zero(e);
e.xany.type = ClientMessage;
e.xclient.message_type = _NET_WM_STATE;
e.xclient.format = 32;
e.xclient.window = data->xwindow;
e.xclient.data.l[0] = _NET_WM_STATE_REMOVE;
e.xclient.data.l[1] = data->videodata->_NET_WM_STATE_MAXIMIZED_VERT;
e.xclient.data.l[2] = data->videodata->_NET_WM_STATE_MAXIMIZED_HORZ;
e.xclient.data.l[3] = 0l;
X11_XSendEvent(display, RootWindow(display, displaydata->screen), 0,
SubstructureNotifyMask | SubstructureRedirectMask, &e);
}
} else {
Uint32 flags;

Expand All @@ -1206,14 +1222,6 @@ X11_SetWindowFullscreenViaWM(_THIS, SDL_Window * window, SDL_VideoDisplay * _dis
}
}

/* Fullscreen windows sometimes end up being marked maximized by
window managers. Force it back to how we expect it to be. */
if (X11_IsWindowMapped(_this, window)) {
if (!fullscreen && ((window->flags & SDL_WINDOW_MAXIMIZED) == 0)) {
SetWindowMaximized(_this, window, SDL_FALSE);
}
}

X11_XFlush(display);
}

Expand Down

0 comments on commit 2436ca2

Please sign in to comment.