diff --git a/client.cpp b/client.cpp index 9017c3907b..b6be143b2a 100644 --- a/client.cpp +++ b/client.cpp @@ -32,6 +32,9 @@ along with this program. If not, see . #include "focuschain.h" #include "group.h" #include "shadow.h" +#ifdef KWIN_BUILD_TABBOX +#include "tabbox.h" +#endif #include "workspace.h" #include "screenedge.h" #include "decorations/decorationbridge.h" @@ -205,6 +208,12 @@ void Client::releaseWindow(bool on_shutdown) { assert(!deleting); deleting = true; +#ifdef KWIN_BUILD_TABBOX + TabBox::TabBox *tabBox = TabBox::TabBox::self(); + if (tabBox->isDisplayed() && tabBox->currentClient() == this) { + tabBox->nextPrev(true); + } +#endif destroyWindowManagementInterface(); Deleted* del = NULL; if (!on_shutdown) { @@ -275,6 +284,12 @@ void Client::destroyClient() { assert(!deleting); deleting = true; +#ifdef KWIN_BUILD_TABBOX + TabBox::TabBox *tabBox = TabBox::TabBox::self(); + if (tabBox->isDisplayed() && tabBox->currentClient() == this) { + tabBox->nextPrev(true); + } +#endif destroyWindowManagementInterface(); Deleted* del = Deleted::create(this); if (isMoveResize()) diff --git a/workspace.cpp b/workspace.cpp index a0e6d5dbcc..26c1b5715a 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -651,12 +651,6 @@ void Workspace::removeClient(Client* c) clientShortcutUpdated(c); // Needed, since this is otherwise delayed by setShortcut() and wouldn't run } -#ifdef KWIN_BUILD_TABBOX - TabBox::TabBox *tabBox = TabBox::TabBox::self(); - if (tabBox->isDisplayed() && tabBox->currentClient() == c) - tabBox->nextPrev(true); -#endif - Q_ASSERT(clients.contains(c) || desktops.contains(c)); // TODO: if marked client is removed, notify the marked list clients.removeAll(c); @@ -680,6 +674,7 @@ void Workspace::removeClient(Client* c) updateStackingOrder(true); #ifdef KWIN_BUILD_TABBOX + TabBox::TabBox *tabBox = TabBox::TabBox::self(); if (tabBox->isDisplayed()) tabBox->reset(true); #endif