From 12e59f9af8016d82ccaecfa181b3052bc2daf784 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Thu, 24 Sep 2020 17:12:02 +0300 Subject: [PATCH] Schedule workspace repaint for destroyed clients We need to schedule a workspace repaint in case no effect is going to animate the window. The workspace repaint is issued before creating a Deleted because the latter takes the owner of the effect window, which means that after an instance of Deleted has been created, visibleRect() returns the frame geometry. CCBUG: 425294 --- abstract_client.cpp | 1 + unmanaged.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/abstract_client.cpp b/abstract_client.cpp index bac6ca25f..96122f0f2 100644 --- a/abstract_client.cpp +++ b/abstract_client.cpp @@ -236,6 +236,7 @@ void AbstractClient::markAsZombie() { Q_ASSERT(!m_zombie); m_zombie = true; + addWorkspaceRepaint(visibleRect()); } Layer AbstractClient::layer() const diff --git a/unmanaged.cpp b/unmanaged.cpp index 93061449e..c55caac2f 100644 --- a/unmanaged.cpp +++ b/unmanaged.cpp @@ -87,6 +87,7 @@ bool Unmanaged::track(xcb_window_t w) void Unmanaged::release(ReleaseReason releaseReason) { + addWorkspaceRepaint(visibleRect()); Deleted* del = nullptr; if (releaseReason != ReleaseReason::KWinShutsDown) { del = Deleted::create(this); @@ -99,7 +100,6 @@ void Unmanaged::release(ReleaseReason releaseReason) Xcb::selectInput(window(), XCB_EVENT_MASK_NO_EVENT); } workspace()->removeUnmanaged(this); - addWorkspaceRepaint(visibleRect()); if (releaseReason != ReleaseReason::KWinShutsDown) { disownDataPassedToDeleted(); del->unrefWindow();