rendered paste bodyIndex: include/beryl.h
===================================================================
--- include/beryl.h (Revision 3425)
+++ include/beryl.h (Arbeitskopie)
@@ -26,7 +26,7 @@
#ifndef _BERYL_H
#define _BERYL_H
-#define BERYL_VERSION 49
+#define BERYL_VERSION 50
#define BERYL_ABI_INFO \
BERYL_VERSION, \
@@ -2243,6 +2243,8 @@
Bool shaded;
Bool hidden;
+ Bool grabbed;
+
int texCoordSize;
int indexCount;
Index: src/window.c
===================================================================
--- src/window.c (Revision 3425)
+++ src/window.c (Arbeitskopie)
@@ -1844,6 +1844,7 @@
w->inShowDesktopMode = FALSE;
w->shaded = FALSE;
w->hidden = FALSE;
+ w->grabbed = FALSE;
// optional variables
w->texCoordSize = 2; // default: only S and T (no R or Q coordinate)
@@ -2511,10 +2512,14 @@
updateFrameWindow(w);
}
- else if (w->attrib.x != x || w->attrib.y != y)
+ else if ((w->attrib.x != x || w->attrib.y != y) && !w->grabbed)
{
int dx, dy;
+ /* only update the position of non-grabbed windows - it's in the
+ responsibility of a grabbing plugin to sync the window position
+ after ungrab */
+
dx = x - w->attrib.x;
dy = y - w->attrib.y;
@@ -2808,15 +2813,17 @@
windowGrabNotify(CompWindow * w,
int x, int y, unsigned int state, unsigned int mask)
{
+ w->grabbed = TRUE;
}
void windowUngrabNotify(CompWindow * w)
{
+ w->grabbed = FALSE;
}
void windowStateChangeNotify(CompWindow * w)
{
- w->lastState=w->state;
+ w->lastState = w->state;
}
static Bool isGroupTransient(CompWindow * w, Window clientLeader)