rev 5166 - trunk/packages/kdebase/debian/patches
Ana Beatriz Guerrero López
ana at alioth.debian.org
Wed Dec 20 11:59:36 CET 2006
Author: ana
Date: 2006-12-20 11:59:35 +0100 (Wed, 20 Dec 2006)
New Revision: 5166
Added:
trunk/packages/kdebase/debian/patches/36_kwin.diff
Log:
Patch (i did need re-work it because kwin/group.ccp has been altered a bit)
Added: trunk/packages/kdebase/debian/patches/36_kwin.diff
===================================================================
--- trunk/packages/kdebase/debian/patches/36_kwin.diff 2006-12-19 15:56:36 UTC (rev 5165)
+++ trunk/packages/kdebase/debian/patches/36_kwin.diff 2006-12-20 10:59:35 UTC (rev 5166)
@@ -0,0 +1,75 @@
+--- kdebase-3.5.5a.dfsg.1/kwin/group.cpp 2006-10-01 19:32:07.000000000 +0200
++++ kwin/group.cpp 2006-12-20 10:56:48.000000000 +0100
+@@ -761,6 +761,7 @@
+ void Client::checkGroup( Group* set_group, bool force )
+ {
+ 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 )
+@@ -817,13 +818,17 @@
+ in_group->addMember( this );
+ }
+ }
+- else // not transient without a group, put it in its own group
+- {
+- if( in_group != NULL && in_group->leader() != window())
++ else // Not transient without a group, put it in its client leader group.
++ { // This might be stupid if grouping was used for e.g. taskbar grouping
++ // or minimizing together the whole group, but as long as its used
++ // only for dialogs it's better to keep windows from one app in one group.
++ Group* new_group = workspace()->findClientLeaderGroup( this );
++ if( in_group != NULL && in_group != new_group )
+ {
+ in_group->removeMember( this );
+ in_group = NULL;
+ }
++ in_group = new_group;
+ if( in_group == NULL )
+ {
+ in_group = new Group( None, workspace());
+@@ -843,35 +848,25 @@
+ ++it;
+ }
+ if( groupTransient())
+- { // and make transient for all in the group
+- for( ClientList::ConstIterator it = group()->members().begin();
+- it != group()->members().end();
+- ++it )
+- {
+- if( *it == this )
+- break; // this means the window is only transient for windows mapped before it
+- (*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
++ // 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 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()
++ // and make transient for all in the new group
+ for( ClientList::ConstIterator it = group()->members().begin();
+ it != group()->members().end();
+ ++it )
++ {
++ if( *it == this )
++ break; // this means the window is only transient for windows mapped before 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();
More information about the pkg-kde-commits
mailing list