From 10af64fc67daee1c4920f7c0e94e87eb624c0b2d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@kde.org>
Date: Mon, 2 Jun 2008 14:34:05 +0000
Subject: [PATCH] Compute workarea diffs right when setting geometry, not
 delayed. Fixes e.g. 'Move Window to Next Screen' shortcut. BUG: 163051

svn path=/trunk/KDE/kdebase/workspace/; revision=815700
---
 geometry.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/geometry.cpp b/geometry.cpp
index 15c2220027..f56d96c1c2 100644
--- a/geometry.cpp
+++ b/geometry.cpp
@@ -1702,6 +1702,7 @@ void Client::setGeometry( int x, int y, int w, int h, ForceGeometry_t force )
     if( force == NormalGeometrySet && geom == g && pending_geometry_update == PendingGeometryNone )
         return;
     geom = g;
+    updateWorkareaDiffs();
     if( block_geometry_updates != 0 )
         {
         if( pending_geometry_update == PendingGeometryForced )
@@ -1729,7 +1730,6 @@ void Client::setGeometry( int x, int y, int w, int h, ForceGeometry_t force )
     else
         XMoveWindow( display(), frameId(), x, y );
     // SELI TODO won't this be too expensive?
-    updateWorkareaDiffs();
     sendSyntheticConfigureNotify();
     updateWindowRules();
     checkMaximizeGeometry();
@@ -1780,6 +1780,7 @@ void Client::plainResize( int w, int h, ForceGeometry_t force )
     if( force == NormalGeometrySet && geom.size() == s )
         return;
     geom.setSize( s );
+    updateWorkareaDiffs();
     if( block_geometry_updates != 0 )
         {
         if( pending_geometry_update == PendingGeometryForced )
@@ -1801,7 +1802,6 @@ void Client::plainResize( int w, int h, ForceGeometry_t force )
         XMoveResizeWindow( display(), window(), 0, 0, cs.width(), cs.height());
         }
     updateShape();
-    updateWorkareaDiffs();
     sendSyntheticConfigureNotify();
     updateWindowRules();
     checkMaximizeGeometry();
@@ -1832,6 +1832,7 @@ void Client::move( int x, int y, ForceGeometry_t force )
     if( force == NormalGeometrySet && geom.topLeft() == p )
         return;
     geom.moveTopLeft( p );
+    updateWorkareaDiffs();
     if( block_geometry_updates != 0 )
         {
         if( pending_geometry_update == PendingGeometryForced )
@@ -1843,7 +1844,6 @@ void Client::move( int x, int y, ForceGeometry_t force )
         return;
         }
     XMoveWindow( display(), frameId(), x, y );
-    updateWorkareaDiffs();
     sendSyntheticConfigureNotify();
     updateWindowRules();
     checkMaximizeGeometry();