Compare commits

...

3 Commits

Author SHA1 Message Date
aditiv
3a2fa82546
Merge 6d94c6792b into acb92944d4 2025-08-19 18:17:20 +08:00
Doug Binks
acb92944d4 Revert readme for "Wayland: Keyboard leave event handler now processes key repeats" 2025-08-19 11:30:52 +02:00
Aditi Verma
6d94c6792b 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.
2025-08-14 17:28:04 +05:30
2 changed files with 28 additions and 20 deletions

View File

@ -134,7 +134,6 @@ information on what to include when reporting a bug.
- [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727)
- [Wayland] Bugfix: Reset key repeat timer when window destroyed (#2741,#2727)
- [Wayland] Bugfix: Memory would leak if reading a data offer failed midway
- [Wayland] Bugfix: Keyboard leave event handler now processes key repeats (#2736)
- [Wayland] Bugfix: Retrieved cursor position would be incorrect when hovering over
fallback decorations
- [Wayland] Bugfix: Fallback decorations would report scroll events

View File

@ -1016,48 +1016,57 @@ static GLFWbool createLibdecorFrame(_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->minwidth == GLFW_DONT_CARE || window->minheight == GLFW_DONT_CARE)
minwidth = minheight = 0;
else
if (window->minwidth != GLFW_DONT_CARE && window->minheight != GLFW_DONT_CARE)
{
minwidth = window->minwidth;
minwidth = window->minwidth;
minheight = window->minheight;
if (window->wl.fallback.decorations)
{
minwidth += GLFW_BORDER_SIZE * 2;
minheight += GLFW_CAPTION_HEIGHT + GLFW_BORDER_SIZE;
}
setMin = GLFW_TRUE;
}
if (window->maxwidth == GLFW_DONT_CARE || window->maxheight == GLFW_DONT_CARE)
maxwidth = maxheight = 0;
else
if (window->maxwidth != GLFW_DONT_CARE && window->maxheight != GLFW_DONT_CARE)
{
maxwidth = window->maxwidth;
maxwidth = window->maxwidth;
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;
}
}
}
else
{
// Non-resizable: lock to current size
minwidth = maxwidth = window->wl.width;
minheight = maxheight = window->wl.height;
setMin = setMax = GLFW_TRUE;
}
xdg_toplevel_set_min_size(window->wl.xdg.toplevel, minwidth, minheight);
xdg_toplevel_set_max_size(window->wl.xdg.toplevel, maxwidth, maxheight);
if (setMin)
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)
{
window->wl.xdg.surface = xdg_wm_base_get_xdg_surface(_glfw.wl.wmBase,