X11: Fix EWMH state update for hidden windows

The EWMH window state code assumed the window was mapped.

Fixes #1358.
This commit is contained in:
Camilla Löwy 2019-01-31 00:02:16 +01:00
parent 7f4dde15e4
commit 78e6a0063d
2 changed files with 11 additions and 4 deletions

View File

@ -250,6 +250,8 @@ information on what to include when reporting a bug.
- [X11] Bugfix: `glfwSetWindowMonitor` did not update hints when resizing - [X11] Bugfix: `glfwSetWindowMonitor` did not update hints when resizing
non-user-resizable windows non-user-resizable windows
- [X11] Bugfix: `glfwSetWindowMonitor` did not flush output buffer in some cases - [X11] Bugfix: `glfwSetWindowMonitor` did not flush output buffer in some cases
- [X11] Bugfix: `glfwSetWindowMonitor` did not update the EWMH state of hidden
windows (#1358)
- [Linux] Added workaround for missing `SYN_DROPPED` in pre-2.6.39 kernel - [Linux] Added workaround for missing `SYN_DROPPED` in pre-2.6.39 kernel
headers (#1196) headers (#1196)
- [Linux] Moved to evdev for joystick input (#906,#1005) - [Linux] Moved to evdev for joystick input (#906,#1005)

View File

@ -2410,16 +2410,21 @@ void _glfwPlatformSetWindowMonitor(_GLFWwindow* window,
_glfwInputWindowMonitor(window, monitor); _glfwInputWindowMonitor(window, monitor);
updateNormalHints(window, width, height); updateNormalHints(window, width, height);
updateWindowMode(window);
if (window->monitor) if (window->monitor)
{ {
XMapRaised(_glfw.x11.display, window->x11.handle); if (!_glfwPlatformWindowVisible(window))
if (waitForVisibilityNotify(window)) {
acquireMonitor(window); XMapRaised(_glfw.x11.display, window->x11.handle);
waitForVisibilityNotify(window);
}
updateWindowMode(window);
acquireMonitor(window);
} }
else else
{ {
updateWindowMode(window);
XMoveResizeWindow(_glfw.x11.display, window->x11.handle, XMoveResizeWindow(_glfw.x11.display, window->x11.handle,
xpos, ypos, width, height); xpos, ypos, width, height);
} }