diff --git a/src/x11_window.c b/src/x11_window.c index 0f805324..f3730c25 100644 --- a/src/x11_window.c +++ b/src/x11_window.c @@ -209,7 +209,7 @@ static void sendEventToWM(_GLFWwindow* window, Atom type, // Updates the normal hints according to the window settings // -static void updateNormalHints(_GLFWwindow* window) +static void updateNormalHints(_GLFWwindow* window, int width, int height) { XSizeHints* hints = XAllocSizeHints(); @@ -239,9 +239,6 @@ static void updateNormalHints(_GLFWwindow* window) } else { - int width, height; - _glfwPlatformGetWindowSize(window, &width, &height); - hints->flags |= (PMinSize | PMaxSize); hints->min_width = hints->max_width = width; hints->min_height = hints->max_height = height; @@ -256,8 +253,6 @@ static void updateNormalHints(_GLFWwindow* window) // static void updateWindowMode(_GLFWwindow* window) { - updateNormalHints(window); - if (window->monitor) { if (_glfw.x11.xinerama.available && @@ -556,7 +551,7 @@ static GLFWbool createWindow(_GLFWwindow* window, XFree(hints); } - updateNormalHints(window); + updateNormalHints(window, wndconfig->width, wndconfig->height); // Set ICCCM WM_CLASS property // HACK: Until a mechanism for specifying the application name is added, the @@ -1729,7 +1724,7 @@ void _glfwPlatformSetWindowSize(_GLFWwindow* window, int width, int height) else { if (!window->resizable) - updateNormalHints(window); + updateNormalHints(window, width, height); XResizeWindow(_glfw.x11.display, window->x11.handle, width, height); } @@ -1741,13 +1736,17 @@ void _glfwPlatformSetWindowSizeLimits(_GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight) { - updateNormalHints(window); + int width, height; + _glfwPlatformGetWindowSize(window, &width, &height); + updateNormalHints(window, width, height); XFlush(_glfw.x11.display); } void _glfwPlatformSetWindowAspectRatio(_GLFWwindow* window, int numer, int denom) { - updateNormalHints(window); + int width, height; + _glfwPlatformGetWindowSize(window, &width, &height); + updateNormalHints(window, width, height); XFlush(_glfw.x11.display); } @@ -1943,6 +1942,7 @@ void _glfwPlatformSetWindowMonitor(_GLFWwindow* window, releaseMonitor(window); _glfwInputWindowMonitorChange(window, monitor); + updateNormalHints(window, width, height); updateWindowMode(window); if (window->monitor)