Merge branch 'glfw_upstream' of https://github.com/Luflosi/kitty

This commit is contained in:
Kovid Goyal 2019-12-19 16:53:38 +05:30
commit dd8b97a86c
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

57
glfw/x11_window.c vendored
View File

@ -2146,9 +2146,14 @@ void _glfwPlatformRestoreWindow(_GLFWwindow* window)
void _glfwPlatformMaximizeWindow(_GLFWwindow* window) void _glfwPlatformMaximizeWindow(_GLFWwindow* window)
{ {
if (_glfw.x11.NET_WM_STATE && if (!_glfw.x11.NET_WM_STATE ||
_glfw.x11.NET_WM_STATE_MAXIMIZED_VERT && !_glfw.x11.NET_WM_STATE_MAXIMIZED_VERT ||
_glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ) !_glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ)
{
return;
}
if (_glfwPlatformWindowVisible(window))
{ {
sendEventToWM(window, sendEventToWM(window,
_glfw.x11.NET_WM_STATE, _glfw.x11.NET_WM_STATE,
@ -2156,8 +2161,52 @@ void _glfwPlatformMaximizeWindow(_GLFWwindow* window)
_glfw.x11.NET_WM_STATE_MAXIMIZED_VERT, _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT,
_glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ, _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ,
1, 0); 1, 0);
XFlush(_glfw.x11.display);
} }
else
{
Atom* states = NULL;
unsigned long count =
_glfwGetWindowPropertyX11(window->x11.handle,
_glfw.x11.NET_WM_STATE,
XA_ATOM,
(unsigned char**) &states);
// NOTE: We don't check for failure as this property may not exist yet
// and that's fine (and we'll create it implicitly with append)
Atom missing[2] =
{
_glfw.x11.NET_WM_STATE_MAXIMIZED_VERT,
_glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ
};
unsigned long missingCount = 2;
for (unsigned long i = 0; i < count; i++)
{
for (unsigned long j = 0; j < missingCount; j++)
{
if (states[i] == missing[j])
{
missing[j] = missing[missingCount - 1];
missingCount--;
}
}
}
if (states)
XFree(states);
if (!missingCount)
return;
XChangeProperty(_glfw.x11.display, window->x11.handle,
_glfw.x11.NET_WM_STATE, XA_ATOM, 32,
PropModeAppend,
(unsigned char*) missing,
missingCount);
}
XFlush(_glfw.x11.display);
} }
void _glfwPlatformShowWindow(_GLFWwindow* window) void _glfwPlatformShowWindow(_GLFWwindow* window)