skip reset states if client untabbed for release

BUG: 299333
FIXED-IN: 4.10
REVIEW: 108003
This commit is contained in:
Thomas Lübking 2012-12-29 15:36:55 +01:00
parent ad451beae2
commit 1727ab1211
3 changed files with 5 additions and 3 deletions

View file

@ -1849,13 +1849,15 @@ bool Client::tabTo(Client *other, bool behind, bool activate)
return true; return true;
} }
bool Client::untab(const QRect &toGeometry) bool Client::untab(const QRect &toGeometry, bool clientRemoved)
{ {
TabGroup *group = tab_group; TabGroup *group = tab_group;
if (group && group->remove(this)) { // remove sets the tabgroup to "0", therefore the pointer is cached if (group && group->remove(this)) { // remove sets the tabgroup to "0", therefore the pointer is cached
if (group->isEmpty()) { if (group->isEmpty()) {
delete group; delete group;
} }
if (clientRemoved)
return true; // there's been a broadcast signal that this client is now removed - don't touch it
setClientShown(!(isMinimized() || isShade())); setClientShown(!(isMinimized() || isShade()));
bool keepSize = toGeometry.size() == size(); bool keepSize = toGeometry.size() == size();
bool changedSize = false; bool changedSize = false;

View file

@ -556,7 +556,7 @@ public:
* WARNING: non dynamic properties are ignored - you're not supposed to alter/update such explicitly * WARNING: non dynamic properties are ignored - you're not supposed to alter/update such explicitly
*/ */
Q_INVOKABLE void syncTabGroupFor(QString property, bool fromThisClient = false); Q_INVOKABLE void syncTabGroupFor(QString property, bool fromThisClient = false);
Q_INVOKABLE bool untab(const QRect &toGeometry = QRect()); Q_INVOKABLE bool untab(const QRect &toGeometry = QRect(), bool clientRemoved = false);
/** /**
* Set tab group - this is to be invoked by TabGroup::add/remove(client) and NO ONE ELSE * Set tab group - this is to be invoked by TabGroup::add/remove(client) and NO ONE ELSE
*/ */

View file

@ -663,7 +663,7 @@ void Workspace::removeClient(Client* c, allowed_t)
m_userActionsMenu->close(); m_userActionsMenu->close();
} }
c->untab(); c->untab(QRect(), true);
if (client_keys_client == c) if (client_keys_client == c)
setupWindowShortcutDone(false); setupWindowShortcutDone(false);