|
@@ -270,6 +270,11 @@ static void updateNormalHints(_GLFWwindow* window, int width, int height)
|
|
|
{
|
|
|
XSizeHints* hints = XAllocSizeHints();
|
|
|
|
|
|
+ long supplied;
|
|
|
+ XGetWMNormalHints(_glfw.x11.display, window->x11.handle, hints, &supplied);
|
|
|
+
|
|
|
+ hints->flags &= ~(PMinSize | PMaxSize | PAspect);
|
|
|
+
|
|
|
if (!window->monitor)
|
|
|
{
|
|
|
if (window->resizable)
|
|
@@ -306,9 +311,6 @@ static void updateNormalHints(_GLFWwindow* window, int width, int height)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- hints->flags |= PWinGravity;
|
|
|
- hints->win_gravity = StaticGravity;
|
|
|
-
|
|
|
XSetWMNormalHints(_glfw.x11.display, window->x11.handle, hints);
|
|
|
XFree(hints);
|
|
|
}
|
|
@@ -696,7 +698,28 @@ static GLFWbool createNativeWindow(_GLFWwindow* window,
|
|
|
XFree(hints);
|
|
|
}
|
|
|
|
|
|
- updateNormalHints(window, width, height);
|
|
|
+ // Set ICCCM WM_NORMAL_HINTS property
|
|
|
+ {
|
|
|
+ XSizeHints* hints = XAllocSizeHints();
|
|
|
+ if (!hints)
|
|
|
+ {
|
|
|
+ _glfwInputError(GLFW_OUT_OF_MEMORY, "X11: Failed to allocate size hints");
|
|
|
+ return GLFW_FALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!wndconfig->resizable)
|
|
|
+ {
|
|
|
+ hints->flags |= (PMinSize | PMaxSize);
|
|
|
+ hints->min_width = hints->max_width = width;
|
|
|
+ hints->min_height = hints->max_height = height;
|
|
|
+ }
|
|
|
+
|
|
|
+ hints->flags |= PWinGravity;
|
|
|
+ hints->win_gravity = StaticGravity;
|
|
|
+
|
|
|
+ XSetWMNormalHints(_glfw.x11.display, window->x11.handle, hints);
|
|
|
+ XFree(hints);
|
|
|
+ }
|
|
|
|
|
|
// Set ICCCM WM_CLASS property
|
|
|
{
|