Remove group transients from transient_list of windows from old group.
I have to say I'm rather impressed by the level of brokeness of Java's window handling. BUG: 117677 svn path=/trunk/KDE/kdebase/workspace/; revision=613277
This commit is contained in:
parent
508178e0d1
commit
28dd80d4ca
1 changed files with 11 additions and 20 deletions
31
group.cpp
31
group.cpp
|
@ -873,6 +873,7 @@ void Client::checkGroup( Group* set_group, bool force )
|
|||
{
|
||||
TRANSIENCY_CHECK( this );
|
||||
Group* old_group = in_group;
|
||||
Window old_group_leader = old_group != NULL ? old_group->leader() : None;
|
||||
if( set_group != NULL )
|
||||
{
|
||||
if( set_group != in_group )
|
||||
|
@ -959,7 +960,16 @@ void Client::checkGroup( Group* set_group, bool force )
|
|||
++it;
|
||||
}
|
||||
if( groupTransient())
|
||||
{ // and make transient for all in the group
|
||||
{
|
||||
// no longer transient for ones in the old group
|
||||
if( old_group != NULL && workspace()->findGroup( old_group_leader ) == old_group ) // if it still exists
|
||||
{
|
||||
for( ClientList::ConstIterator it = old_group->members().begin();
|
||||
it != old_group->members().end();
|
||||
++it )
|
||||
(*it)->removeTransient( this );
|
||||
}
|
||||
// and make transient for all in the new group
|
||||
for( ClientList::ConstIterator it = group()->members().begin();
|
||||
it != group()->members().end();
|
||||
++it )
|
||||
|
@ -969,25 +979,6 @@ void Client::checkGroup( Group* set_group, bool force )
|
|||
(*it)->addTransient( this );
|
||||
}
|
||||
}
|
||||
#if 0 // TODO
|
||||
if( groupTransient())
|
||||
{
|
||||
if( workspace()->findGroup( old_group )) // if it still exists
|
||||
{ // it's no longer transient for windows in the old group
|
||||
for( ClientList::ConstIterator it = old_group->members().begin();
|
||||
it != old_group->members().end();
|
||||
++it )
|
||||
(*it)->removeTransient( this );
|
||||
}
|
||||
// and it's transiet for all windows in the new group (this one is the most recent
|
||||
// in the group, so it is transient only for all previous windows)
|
||||
// loops are checked in checkGroupTransients()
|
||||
for( ClientList::ConstIterator it = group()->members().begin();
|
||||
it != group()->members().end();
|
||||
++it )
|
||||
(*it)->addTransient( this );
|
||||
}
|
||||
#endif
|
||||
// group transient splashscreens should be transient even for windows
|
||||
// in group mapped later
|
||||
for( ClientList::ConstIterator it = group()->members().begin();
|
||||
|
|
Loading…
Reference in a new issue