diff --git a/src/wayland/session_lock/session_lock.cpp b/src/wayland/session_lock/session_lock.cpp index 601795c..ef1e9b1 100644 --- a/src/wayland/session_lock/session_lock.cpp +++ b/src/wayland/session_lock/session_lock.cpp @@ -68,7 +68,10 @@ bool LockWindowExtension::attach(QWindow* window, SessionLockManager* manager) { if (current != nullptr) { current->surface->setExtension(this); } else { + // Qt appears to be resetting the window's screen on creation on some systems. This works around it. + auto* screen = window->screen(); window->create(); + window->setScreen(screen); waylandWindow = dynamic_cast(window->handle()); if (waylandWindow == nullptr) { diff --git a/src/wayland/wlr_layershell/window.cpp b/src/wayland/wlr_layershell/window.cpp index 7c51aa9..b48ecff 100644 --- a/src/wayland/wlr_layershell/window.cpp +++ b/src/wayland/wlr_layershell/window.cpp @@ -54,7 +54,10 @@ bool LayershellWindowExtension::attach(QWindow* window) { } if (!hasSurface) { + // Qt appears to be resetting the window's screen on creation on some systems. This works around it. + auto* screen = window->screen(); window->create(); + window->setScreen(screen); auto* waylandWindow = dynamic_cast(window->handle()); if (waylandWindow == nullptr) {