[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.4/kdebase/workspace/kwin
From: Hugo Pereira Da Costa <hugo.pereira () free ! fr>
Date: 2010-01-28 3:25:54
Message-ID: 1264649154.252411.21520.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1081275 by hpereiradacosta:
Backport: r1081273
Added shadeMode synchronization between client and target when attempting to add a \
client to a group. Triggers target decoration repaint when adding the client to the \
group fails, in order to make sure that hove animations are reset \
properly.
CCBUG: 223726
M +18 -0 clientgroup.cpp
--- branches/KDE/4.4/kdebase/workspace/kwin/clientgroup.cpp #1081274:1081275
@@ -64,13 +64,28 @@
// If it's not possible to have the same states then ungroup them, TODO: Check \
all states
// We do this here as the ungroup code in updateStates() cannot be called until \
add() completes + ShadeMode oldShadeMode = c->shadeMode();
+ if( c->shadeMode() != clients_[visible_]->shadeMode() )
+ c->setShade( clients_[visible_]->shadeMode() );
+ if( c->shadeMode() != clients_[visible_]->shadeMode() )
+ {
+ if( oldGroup ) // Re-add to old group if required
+ c->setClientGroup( oldGroup );
+ // One need to trigger decoration repaint on the group to
+ // make sure hover animations are properly reset.
+ clients_[visible_]->triggerDecorationRepaint();
+ return;
+ }
QRect oldGeom = c->geometry();
if( c->geometry() != clients_[visible_]->geometry() )
c->setGeometry( clients_[visible_]->geometry() );
if( c->geometry() != clients_[visible_]->geometry() )
{
+ if( c->shadeMode() != oldShadeMode )
+ c->setShade( oldShadeMode ); // Restore old shade mode
if( oldGroup ) // Re-add to old group if required
c->setClientGroup( oldGroup );
+ clients_[visible_]->triggerDecorationRepaint();
return;
}
if( c->desktop() != clients_[visible_]->desktop() )
@@ -79,8 +94,11 @@
{
if( c->geometry() != oldGeom )
c->setGeometry( oldGeom ); // Restore old geometry
+ if( c->shadeMode() != oldShadeMode )
+ c->setShade( oldShadeMode ); // Restore old shade mode
if( oldGroup ) // Re-add to old group if required
c->setClientGroup( oldGroup );
+ clients_[visible_]->triggerDecorationRepaint();
return;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic