diff --git a/client.cpp b/client.cpp index 8d6e736372..8e78d9687c 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" @@ -217,6 +220,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) { @@ -287,6 +296,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 09fc6f6d66..2adfa2edb0 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -679,12 +679,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); @@ -710,6 +704,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