File hidedesktop-NOMAD.diff of Package compiz-plugins-dmx

commit daa3672b32f000b21ba35ba5fea7ea51c99968f7
Author: David Reveman <davidr@novell.com>
Date:   Wed Nov 26 17:26:25 2008 -0500

    Add inputX and inputY as serverX and serverY variables are abused
    by some plugins.

diff --git a/hidedesktop.c b/hidedesktop.c
index c26f0f1..11054bf 100644
--- a/hidedesktop.c
+++ b/hidedesktop.c
@@ -33,6 +33,8 @@ typedef struct _HdWindow {
     Bool              hideDesktop;
     Bool              lastHideDesktop;
     Region            inputRegion;
+    int               inputX;
+    int               inputY;
     CompTimeoutHandle checkHandle;
 } HdWindow;
 
@@ -147,6 +149,9 @@ hdGetWindowInputRegion (CompWindow *w)
     if (!hw->inputRegion)
 	return NULL;
 
+    hw->inputX = w->serverX;
+    hw->inputY = w->serverY;
+
     if (w->screen->display->shapeExtension)
     {
 	int order;
@@ -195,10 +200,10 @@ hdGetWindowInputRegion (CompWindow *w)
 	if (rect.extents.y1 < rect.extents.y2 &&
 	    rect.extents.x1 < rect.extents.x2)
 	{
-	    rect.extents.x1 += w->serverX;
-	    rect.extents.y1 += w->serverY;
-	    rect.extents.x2 += w->serverX;
-	    rect.extents.y2 += w->serverY;
+	    rect.extents.x1 += hw->inputX;
+	    rect.extents.y1 += hw->inputY;
+	    rect.extents.x2 += hw->inputX;
+	    rect.extents.y2 += hw->inputY;
 
 	    XUnionRegion (&rect, hw->inputRegion, hw->inputRegion);
 	}
@@ -485,11 +490,13 @@ hdHandleEvent (CompDisplay *d,
 		}
 		else
 		{
-		    int dx = event->xconfigure.x - w->serverX;
-		    int dy = event->xconfigure.y - w->serverY;
+		    int dx = event->xconfigure.x - hw->inputX;
+		    int dy = event->xconfigure.y - hw->inputY;
 
 		    if (dx || dy)
 		    {
+			hw->inputX += dx;
+			hw->inputY += dy;
 			XOffsetRegion (hw->inputRegion, dx, dy);
 			hdUpdateHideDesktopShape (w);
 		    }
openSUSE Build Service is sponsored by