From cf1a2aeb2d01e446346fcd37c4b8f4e7d40d6f2c Mon Sep 17 00:00:00 2001 From: -k Date: Mon, 9 Mar 2026 09:11:52 -0400 Subject: [PATCH] wayland/toplevel: clear activeToplevel on deactivation --- changelog/next.md | 1 + src/wayland/toplevel_management/qml.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/changelog/next.md b/changelog/next.md index ef63323..fee8599 100644 --- a/changelog/next.md +++ b/changelog/next.md @@ -50,6 +50,7 @@ set shell id. - Fixed ClippingRectangle related crashes. - Fixed crashes when monitors are unplugged. - Fixed crashes when default pipewire devices are lost. +- Fixed ToplevelManager not clearing activeToplevel on deactivation. - Desktop action order is now preserved. ## Packaging Changes diff --git a/src/wayland/toplevel_management/qml.cpp b/src/wayland/toplevel_management/qml.cpp index 0eae3de..6a1d96b 100644 --- a/src/wayland/toplevel_management/qml.cpp +++ b/src/wayland/toplevel_management/qml.cpp @@ -161,7 +161,11 @@ void ToplevelManager::onToplevelReady(impl::ToplevelHandle* handle) { void ToplevelManager::onToplevelActiveChanged() { auto* toplevel = qobject_cast(this->sender()); - if (toplevel->activated()) this->setActiveToplevel(toplevel); + if (toplevel->activated()) { + this->setActiveToplevel(toplevel); + } else if (toplevel == this->mActiveToplevel) { + this->setActiveToplevel(nullptr); + } } void ToplevelManager::onToplevelClosed() {