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
master
Vlad Zahorodnii 2020-09-24 17:12:02 +03:00
parent 6d433bdfc9
commit 12e59f9af8
2 changed files with 2 additions and 1 deletions

View File

@ -236,6 +236,7 @@ void AbstractClient::markAsZombie()
{
Q_ASSERT(!m_zombie);
m_zombie = true;
addWorkspaceRepaint(visibleRect());
}
Layer AbstractClient::layer() const

View File

@ -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();