mirror of
https://github.com/glfw/glfw.git
synced 2026-01-15 02:25:31 +00:00
Compare commits
1 Commits
77ae70bde0
...
13d306db8c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
13d306db8c |
@ -153,7 +153,6 @@ information on what to include when reporting a bug.
|
|||||||
- [X11] Bugfix: Prevent BadWindow when creating small windows with a content scale
|
- [X11] Bugfix: Prevent BadWindow when creating small windows with a content scale
|
||||||
less than 1 (#2754)
|
less than 1 (#2754)
|
||||||
- [X11] Bugfix: Clamp width and height to >= 1 to prevent BadValue error and app exit
|
- [X11] Bugfix: Clamp width and height to >= 1 to prevent BadValue error and app exit
|
||||||
- [X11] Bugfix: Floating windows silently became non-floating when hidden (#2276)
|
|
||||||
- [Linux] Bugfix: The header for `ioctl` was only implicitly included (#2778)
|
- [Linux] Bugfix: The header for `ioctl` was only implicitly included (#2778)
|
||||||
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
|
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
|
||||||
- [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless`
|
- [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless`
|
||||||
|
|||||||
@ -2438,38 +2438,6 @@ void _glfwShowWindowX11(_GLFWwindow* window)
|
|||||||
if (_glfwWindowVisibleX11(window))
|
if (_glfwWindowVisibleX11(window))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (window->floating && _glfw.x11.NET_WM_STATE && _glfw.x11.NET_WM_STATE_ABOVE)
|
|
||||||
{
|
|
||||||
Atom* states = NULL;
|
|
||||||
const 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)
|
|
||||||
|
|
||||||
unsigned long i;
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
{
|
|
||||||
if (states[i] == _glfw.x11.NET_WM_STATE_ABOVE)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == count)
|
|
||||||
{
|
|
||||||
XChangeProperty(_glfw.x11.display, window->x11.handle,
|
|
||||||
_glfw.x11.NET_WM_STATE, XA_ATOM, 32,
|
|
||||||
PropModeAppend,
|
|
||||||
(unsigned char*) &_glfw.x11.NET_WM_STATE_ABOVE,
|
|
||||||
1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (states)
|
|
||||||
XFree(states);
|
|
||||||
}
|
|
||||||
|
|
||||||
XMapWindow(_glfw.x11.display, window->x11.handle);
|
XMapWindow(_glfw.x11.display, window->x11.handle);
|
||||||
waitForVisibilityNotify(window);
|
waitForVisibilityNotify(window);
|
||||||
}
|
}
|
||||||
@ -2699,10 +2667,6 @@ void _glfwSetWindowFloatingX11(_GLFWwindow* window, GLFWbool enabled)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// NOTE: _NET_WM_STATE_ABOVE is added when the window is shown
|
|
||||||
if (enabled)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Atom* states = NULL;
|
Atom* states = NULL;
|
||||||
const unsigned long count =
|
const unsigned long count =
|
||||||
_glfwGetWindowPropertyX11(window->x11.handle,
|
_glfwGetWindowPropertyX11(window->x11.handle,
|
||||||
@ -2713,20 +2677,38 @@ void _glfwSetWindowFloatingX11(_GLFWwindow* window, GLFWbool enabled)
|
|||||||
// NOTE: We don't check for failure as this property may not exist yet
|
// 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)
|
// and that's fine (and we'll create it implicitly with append)
|
||||||
|
|
||||||
unsigned long i;
|
if (enabled)
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
{
|
{
|
||||||
if (states[i] == _glfw.x11.NET_WM_STATE_ABOVE)
|
unsigned long i;
|
||||||
break;
|
|
||||||
|
for (i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
if (states[i] == _glfw.x11.NET_WM_STATE_ABOVE)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == count)
|
||||||
|
{
|
||||||
|
XChangeProperty(_glfw.x11.display, window->x11.handle,
|
||||||
|
_glfw.x11.NET_WM_STATE, XA_ATOM, 32,
|
||||||
|
PropModeAppend,
|
||||||
|
(unsigned char*) &_glfw.x11.NET_WM_STATE_ABOVE,
|
||||||
|
1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else if (states)
|
||||||
if (i < count)
|
|
||||||
{
|
{
|
||||||
states[i] = states[count - 1];
|
for (unsigned long i = 0; i < count; i++)
|
||||||
XChangeProperty(_glfw.x11.display, window->x11.handle,
|
{
|
||||||
_glfw.x11.NET_WM_STATE, XA_ATOM, 32,
|
if (states[i] == _glfw.x11.NET_WM_STATE_ABOVE)
|
||||||
PropModeReplace, (unsigned char*) states, count - 1);
|
{
|
||||||
|
states[i] = states[count - 1];
|
||||||
|
XChangeProperty(_glfw.x11.display, window->x11.handle,
|
||||||
|
_glfw.x11.NET_WM_STATE, XA_ATOM, 32,
|
||||||
|
PropModeReplace, (unsigned char*) states, count - 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (states)
|
if (states)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user