mirror of
https://github.com/glfw/glfw.git
synced 2025-08-31 19:11:49 +00:00
GLFW: wl_window: Use defaults for updateXdgSizeLimits
Due to defaults for width and height not set to 0 below error was seen wl_display@1.error(wl_display@1, 1, "invalid arguments for xdg_toplevel@21.resize") Change sets defaults for width and height to 0 and reorganize code to avoid few checks related to same.
This commit is contained in:
parent
7b51a8eb31
commit
6d94c6792b
@ -870,48 +870,57 @@ static GLFWbool createLibdecorFrame(_GLFWwindow* window)
|
|||||||
|
|
||||||
static void updateXdgSizeLimits(_GLFWwindow* window)
|
static void updateXdgSizeLimits(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
int minwidth, minheight, maxwidth, maxheight;
|
int minwidth = 0, minheight = 0;
|
||||||
|
int maxwidth = 0, maxheight = 0;
|
||||||
|
GLFWbool setMin = GLFW_FALSE, setMax = GLFW_FALSE;
|
||||||
|
|
||||||
if (window->resizable)
|
if (window->resizable)
|
||||||
{
|
{
|
||||||
if (window->minwidth == GLFW_DONT_CARE || window->minheight == GLFW_DONT_CARE)
|
if (window->minwidth != GLFW_DONT_CARE && window->minheight != GLFW_DONT_CARE)
|
||||||
minwidth = minheight = 0;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
minwidth = window->minwidth;
|
minwidth = window->minwidth;
|
||||||
minheight = window->minheight;
|
minheight = window->minheight;
|
||||||
|
setMin = GLFW_TRUE;
|
||||||
if (window->wl.fallback.decorations)
|
|
||||||
{
|
|
||||||
minwidth += GLFW_BORDER_SIZE * 2;
|
|
||||||
minheight += GLFW_CAPTION_HEIGHT + GLFW_BORDER_SIZE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window->maxwidth == GLFW_DONT_CARE || window->maxheight == GLFW_DONT_CARE)
|
if (window->maxwidth != GLFW_DONT_CARE && window->maxheight != GLFW_DONT_CARE)
|
||||||
maxwidth = maxheight = 0;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
maxwidth = window->maxwidth;
|
maxwidth = window->maxwidth;
|
||||||
maxheight = window->maxheight;
|
maxheight = window->maxheight;
|
||||||
|
setMax = GLFW_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (window->wl.fallback.decorations)
|
if (window->wl.fallback.decorations)
|
||||||
|
{
|
||||||
|
if (setMin)
|
||||||
{
|
{
|
||||||
maxwidth += GLFW_BORDER_SIZE * 2;
|
minwidth += GLFW_BORDER_SIZE * 2;
|
||||||
|
minheight += GLFW_CAPTION_HEIGHT + GLFW_BORDER_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (setMax)
|
||||||
|
{
|
||||||
|
maxwidth += GLFW_BORDER_SIZE * 2;
|
||||||
maxheight += GLFW_CAPTION_HEIGHT + GLFW_BORDER_SIZE;
|
maxheight += GLFW_CAPTION_HEIGHT + GLFW_BORDER_SIZE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Non-resizable: lock to current size
|
||||||
minwidth = maxwidth = window->wl.width;
|
minwidth = maxwidth = window->wl.width;
|
||||||
minheight = maxheight = window->wl.height;
|
minheight = maxheight = window->wl.height;
|
||||||
|
setMin = setMax = GLFW_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
xdg_toplevel_set_min_size(window->wl.xdg.toplevel, minwidth, minheight);
|
if (setMin)
|
||||||
xdg_toplevel_set_max_size(window->wl.xdg.toplevel, maxwidth, maxheight);
|
xdg_toplevel_set_min_size(window->wl.xdg.toplevel, minwidth, minheight);
|
||||||
|
|
||||||
|
if (setMax)
|
||||||
|
xdg_toplevel_set_max_size(window->wl.xdg.toplevel, maxwidth, maxheight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static GLFWbool createXdgShellObjects(_GLFWwindow* window)
|
static GLFWbool createXdgShellObjects(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
window->wl.xdg.surface = xdg_wm_base_get_xdg_surface(_glfw.wl.wmBase,
|
window->wl.xdg.surface = xdg_wm_base_get_xdg_surface(_glfw.wl.wmBase,
|
||||||
|
Loading…
Reference in New Issue
Block a user