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;
}
bool Client::untab(const QRect &toGeometry)
bool Client::untab(const QRect &toGeometry, bool clientRemoved)
{
TabGroup *group = tab_group;
if (group && group->remove(this)) { // remove sets the tabgroup to "0", therefore the pointer is cached
if (group->isEmpty()) {
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()));
bool keepSize = toGeometry.size() == size();
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
*/
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
*/

View file

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