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

This commit is contained in:
Kovid Goyal
2019-12-19 17:05:10 +05:30

39
glfw/x11_window.c vendored
View File

@@ -2443,15 +2443,16 @@ void _glfwPlatformSetWindowFloating(_GLFWwindow* window, bool enabled)
} }
else else
{ {
Atom* states; Atom* states = NULL;
unsigned long i, count; unsigned long i, count;
count = _glfwGetWindowPropertyX11(window->x11.handle, count = _glfwGetWindowPropertyX11(window->x11.handle,
_glfw.x11.NET_WM_STATE, _glfw.x11.NET_WM_STATE,
XA_ATOM, XA_ATOM,
(unsigned char**) &states); (unsigned char**) &states);
if (!states)
return; // 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)
if (enabled) if (enabled)
{ {
@@ -2461,32 +2462,36 @@ void _glfwPlatformSetWindowFloating(_GLFWwindow* window, bool enabled)
break; break;
} }
if (i == count) if (i < count)
{ return;
XChangeProperty(_glfw.x11.display, window->x11.handle,
_glfw.x11.NET_WM_STATE, XA_ATOM, 32, XChangeProperty(_glfw.x11.display, window->x11.handle,
PropModeAppend, _glfw.x11.NET_WM_STATE, XA_ATOM, 32,
(unsigned char*) &_glfw.x11.NET_WM_STATE_ABOVE, PropModeAppend,
1); (unsigned char*) &_glfw.x11.NET_WM_STATE_ABOVE,
} 1);
} }
else else if (states)
{ {
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
if (states[i] == _glfw.x11.NET_WM_STATE_ABOVE) if (states[i] == _glfw.x11.NET_WM_STATE_ABOVE)
{ break;
states[i] = states[count - 1];
count--;
}
} }
if (i == count)
return;
states[i] = states[count - 1];
count--;
XChangeProperty(_glfw.x11.display, window->x11.handle, XChangeProperty(_glfw.x11.display, window->x11.handle,
_glfw.x11.NET_WM_STATE, XA_ATOM, 32, _glfw.x11.NET_WM_STATE, XA_ATOM, 32,
PropModeReplace, (unsigned char*) states, count); PropModeReplace, (unsigned char*) states, count);
} }
XFree(states); if (states)
XFree(states);
} }
XFlush(_glfw.x11.display); XFlush(_glfw.x11.display);