diff --git a/src/scene/windowitem.cpp b/src/scene/windowitem.cpp index b926dd1c5e..f29186c705 100644 --- a/src/scene/windowitem.cpp +++ b/src/scene/windowitem.cpp @@ -126,6 +126,9 @@ void WindowItem::handleWindowClosed(Window *original, Deleted *deleted) bool WindowItem::computeVisibility() const { + if (!m_window->readyForPainting()) { + return false; + } if (waylandServer() && waylandServer()->isScreenLocked()) { return m_window->isLockScreen() || m_window->isInputMethod() || m_window->isLockScreenOverlay(); } diff --git a/src/scene/workspacescene.cpp b/src/scene/workspacescene.cpp index 085db4b246..2536a29b47 100644 --- a/src/scene/workspacescene.cpp +++ b/src/scene/workspacescene.cpp @@ -443,13 +443,9 @@ void WorkspaceScene::createStackingOrder() // window should not get focus before it's displayed, handle unredirected windows properly and // so on. for (Window *window : std::as_const(windows)) { - if (!window->readyForPainting()) { - continue; + if (window->windowItem()->isVisible()) { + stacking_order.append(window->windowItem()); } - if (!window->windowItem()->isVisible()) { - continue; - } - stacking_order.append(window->windowItem()); } }