Commit 12e59f9a authored by Vlad Zahorodnii's avatar Vlad Zahorodnii
Browse files

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
parent 6d433bdf
...@@ -236,6 +236,7 @@ void AbstractClient::markAsZombie() ...@@ -236,6 +236,7 @@ void AbstractClient::markAsZombie()
{ {
Q_ASSERT(!m_zombie); Q_ASSERT(!m_zombie);
m_zombie = true; m_zombie = true;
addWorkspaceRepaint(visibleRect());
} }
Layer AbstractClient::layer() const Layer AbstractClient::layer() const
......
...@@ -87,6 +87,7 @@ bool Unmanaged::track(xcb_window_t w) ...@@ -87,6 +87,7 @@ bool Unmanaged::track(xcb_window_t w)
void Unmanaged::release(ReleaseReason releaseReason) void Unmanaged::release(ReleaseReason releaseReason)
{ {
addWorkspaceRepaint(visibleRect());
Deleted* del = nullptr; Deleted* del = nullptr;
if (releaseReason != ReleaseReason::KWinShutsDown) { if (releaseReason != ReleaseReason::KWinShutsDown) {
del = Deleted::create(this); del = Deleted::create(this);
...@@ -99,7 +100,6 @@ void Unmanaged::release(ReleaseReason releaseReason) ...@@ -99,7 +100,6 @@ void Unmanaged::release(ReleaseReason releaseReason)
Xcb::selectInput(window(), XCB_EVENT_MASK_NO_EVENT); Xcb::selectInput(window(), XCB_EVENT_MASK_NO_EVENT);
} }
workspace()->removeUnmanaged(this); workspace()->removeUnmanaged(this);
addWorkspaceRepaint(visibleRect());
if (releaseReason != ReleaseReason::KWinShutsDown) { if (releaseReason != ReleaseReason::KWinShutsDown) {
disownDataPassedToDeleted(); disownDataPassedToDeleted();
del->unrefWindow(); del->unrefWindow();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment