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