diff --git a/src/wl_platform.h b/src/wl_platform.h index 56291c8dc1ccc96c3834d75d74f41ca82fb9efa7..1eaf4d2a283822272e331f60032ab6e6d2ff2854 100644 --- a/src/wl_platform.h +++ b/src/wl_platform.h @@ -177,6 +177,9 @@ typedef struct _GLFWwindowWayland struct zwp_idle_inhibitor_v1* idleInhibitor; + // This is a hack to prevent auto-iconification on creation. + GLFWbool justCreated; + } _GLFWwindowWayland; // Wayland-specific global data diff --git a/src/wl_window.c b/src/wl_window.c index b78233afe2d3baf70eb7378c638367d357fcad5b..82ed2cda281b82660a06c1f00820ddef1aaf0bc6 100644 --- a/src/wl_window.c +++ b/src/wl_window.c @@ -338,9 +338,10 @@ static void xdgToplevelHandleConfigure(void* data, _glfwInputWindowDamage(window); } - if (!activated && window->autoIconify) + if (!window->wl.justCreated && !activated && window->autoIconify) _glfwPlatformIconifyWindow(window); _glfwInputWindowFocus(window, activated); + window->wl.justCreated = GLFW_FALSE; } static void xdgToplevelHandleClose(void* data, @@ -561,6 +562,7 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window, const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig) { + window->wl.justCreated = GLFW_TRUE; window->wl.transparent = fbconfig->transparent; if (!createSurface(window, wndconfig))