Wayland: Fix auto-iconify on kwin_wayland

We now keep track of the fullscreen and activated state and only iconify
if we were previously fullscreen and now we are either not fullscreen or
not activated anymore.

This is the proper way to do it, compared to the previous hack where we
didn’t iconify only if it was the first configure event received.
master
Emmanuel Gil Peyrot ago%!(EXTRA string=7 years)
parent edf0a07174
commit 45bd991ea9
  1. 3
      src/wl_platform.h
  2. 14
      src/wl_window.c

@ -208,8 +208,7 @@ typedef struct _GLFWwindowWayland
struct zwp_idle_inhibitor_v1* idleInhibitor;
// This is a hack to prevent auto-iconification on creation.
GLFWbool justCreated;
GLFWbool wasFullscreen;
struct {
GLFWbool serverSide;

@ -641,10 +641,17 @@ static void xdgToplevelHandleConfigure(void* data,
_glfwInputWindowDamage(window);
}
if (!window->wl.justCreated && !activated && window->monitor && window->autoIconify)
_glfwPlatformIconifyWindow(window);
if (window->wl.wasFullscreen && window->autoIconify)
{
if (!activated || !fullscreen)
{
_glfwPlatformIconifyWindow(window);
window->wl.wasFullscreen = GLFW_FALSE;
}
}
if (fullscreen && activated)
window->wl.wasFullscreen = GLFW_TRUE;
_glfwInputWindowFocus(window, activated);
window->wl.justCreated = GLFW_FALSE;
}
static void xdgToplevelHandleClose(void* data,
@ -913,7 +920,6 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
const _GLFWctxconfig* ctxconfig,
const _GLFWfbconfig* fbconfig)
{
window->wl.justCreated = GLFW_TRUE;
window->wl.transparent = fbconfig->transparent;
if (!createSurface(window, wndconfig))

Loading…
Cancel
Save