summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Spilsbury <Sam@XPS-SUSE.site>2008-12-10 18:32:16 +0900
committerSam Spilsbury <Sam@XPS-SUSE.site>2008-12-10 18:32:16 +0900
commit77e0c5a345bc0e78041ad4b49dd99d08b57947ee (patch)
tree33ddf78af682e17f6fdb982cbc1a843ce33337e2
parent425fb7b196176edc3c3242846b119b4fb2102270 (diff)
downloadcompiz-mpx-ir-77e0c5a345bc0e78041ad4b49dd99d08b57947ee.tar.gz
compiz-mpx-ir-77e0c5a345bc0e78041ad4b49dd99d08b57947ee.tar.bz2
Fix up core patches
-rw-r--r--compiz/0002-MPX-Support-in-plugins.patch421
-rw-r--r--compiz/0003-Input-Redirection-Support-in-Core.patch (renamed from compiz/0003-Input-Redirection-in-Core.patch)307
-rw-r--r--compiz/0004-Input-Redirection-Support-in-Plugins.patch98
-rw-r--r--compiz/0004-Input-redirection-in-plugins.patch350
-rw-r--r--compiz/0005-Update-header-file-and-fix-move-and-resize.patch283
-rw-r--r--compiz/0006-Add-relevant-options.patch541
6 files changed, 681 insertions, 1319 deletions
diff --git a/compiz/0002-MPX-Support-in-plugins.patch b/compiz/0002-MPX-Support-in-plugins.patch
index 8cb0d83..b0dd2d9 100644
--- a/compiz/0002-MPX-Support-in-plugins.patch
+++ b/compiz/0002-MPX-Support-in-plugins.patch
@@ -1,16 +1,82 @@
-From c3ba04e6f7a2fb8124e1f04a01bcbf4fe4c6488a Mon Sep 17 00:00:00 2001
+From 1dec1de1786f21dc84deae0b919c9df2b6075534 Mon Sep 17 00:00:00 2001
From: Sam Spilsbury <Sam@XPS-SUSE.site>
-Date: Sun, 30 Nov 2008 22:24:15 +0900
+Date: Wed, 10 Dec 2008 17:36:09 +0900
Subject: [PATCH] MPX Support in plugins
---
- plugins/annotate.c | 212 ++++++++++---
- plugins/move.c | 453 ++++++++++++++++++++-------
- plugins/resize.c | 880 +++++++++++++++++++++++++++++++++++++++-------------
- plugins/scale.c | 441 ++++++++++++++++++++++++--
- plugins/water.c | 351 ++++++++++++++++++---
- 5 files changed, 1882 insertions(+), 455 deletions(-)
+ include/compiz-scale.h | 28 +-
+ plugins/annotate.c | 212 ++++++++++---
+ plugins/move.c | 458 +++++++++++++++++++------
+ plugins/resize.c | 878 ++++++++++++++++++++++++++++++++++++------------
+ plugins/scale.c | 526 +++++++++++++++++++++++++++--
+ plugins/water.c | 351 ++++++++++++++++---
+ 6 files changed, 1985 insertions(+), 468 deletions(-)
+diff --git a/include/compiz-scale.h b/include/compiz-scale.h
+index 118c27d..b09b53e 100644
+--- a/include/compiz-scale.h
++++ b/include/compiz-scale.h
+@@ -57,6 +57,14 @@ typedef struct _SlotArea {
+ XRectangle workArea;
+ } SlotArea;
+
++typedef struct _ScaleDevice {
++ CompDevice *dev;
++ int grabIndex;
++ Window hoveredWindow;
++ Window selectedWindow;
++ struct _ScaleDevice *next;
++} ScaleDevice;
++
+ #define SCALE_DISPLAY_OPTION_ABI 0
+ #define SCALE_DISPLAY_OPTION_INDEX 1
+ #define SCALE_DISPLAY_OPTION_INITIATE_EDGE 2
+@@ -73,17 +81,10 @@ typedef struct _SlotArea {
+ #define SCALE_DISPLAY_OPTION_INITIATE_OUTPUT_KEY 13
+ #define SCALE_DISPLAY_OPTION_SHOW_DESKTOP 14
+ #define SCALE_DISPLAY_OPTION_RELAYOUT 15
+-#define SCALE_DISPLAY_OPTION_KEY_BINDINGS_TOGGLE 16
+-#define SCALE_DISPLAY_OPTION_BUTTON_BINDINGS_TOGGLE 17
+-#define SCALE_DISPLAY_OPTION_NUM 18
+-
+-typedef struct _ScaleDevice {
+- CompDevice *dev;
+- int grabIndex;
+- Window hoveredWindow;
+- Window selectedWindow;
+- struct _ScaleDevice *next;
+-} ScaleDevice;
++#define SCALE_DISPLAY_OPTION_DOUBLE_CLICK_TIME 16
++#define SCALE_DISPLAY_OPTION_KEY_BINDINGS_TOGGLE 17
++#define SCALE_DISPLAY_OPTION_BUTTON_BINDINGS_TOGGLE 18
++#define SCALE_DISPLAY_OPTION_NUM 19
+
+ typedef struct _ScaleDisplay {
+ int screenPrivateIndex;
+@@ -140,6 +141,7 @@ typedef struct _ScaleScreen {
+ PaintOutputProc paintOutput;
+ PaintWindowProc paintWindow;
+ DamageWindowRectProc damageWindowRect;
++ TransformMeshProc transformMesh;
+
+ ScaleLayoutSlotsAndAssignWindowsProc layoutSlotsAndAssignWindows;
+ ScaleSetScaledPaintAttributesProc setScaledPaintAttributes;
+@@ -164,13 +166,13 @@ typedef struct _ScaleScreen {
+ int slotsSize;
+ int nSlots;
+
++ ScaleDevice *devices;
++
+ /* only used for sorting */
+ CompWindow **windows;
+ int windowsSize;
+ int nWindows;
+
+- ScaleDevice *devices;
+-
+ GLushort opacity;
+
+ ScaleType type;
diff --git a/plugins/annotate.c b/plugins/annotate.c
index 6271260..4827bcf 100644
--- a/plugins/annotate.c
@@ -377,7 +443,7 @@ index 6271260..4827bcf 100644
as->pixmap = None;
as->cairo = NULL;
diff --git a/plugins/move.c b/plugins/move.c
-index 1a4bbda..bee51d8 100644
+index 1a4bbda..014d4d1 100644
--- a/plugins/move.c
+++ b/plugins/move.c
@@ -28,6 +28,7 @@
@@ -738,7 +804,7 @@ index 1a4bbda..bee51d8 100644
}
action->state &= ~(CompActionStateTermKey | CompActionStateTermButton);
-@@ -356,30 +509,34 @@ moveGetYConstrainRegion (CompScreen *s)
+@@ -356,30 +509,35 @@ moveGetYConstrainRegion (CompScreen *s)
}
static void
@@ -753,10 +819,10 @@ index 1a4bbda..bee51d8 100644
+ MoveWindow *mw;
MOVE_SCREEN (s);
+ MOVE_DISPLAY (s->display);
-+
-+ mw = moveGetMoveWinByDev(md, dev);
- if (ms->grabIndex)
++ mw = moveGetMoveWinByDev(md, dev);
++
+ if (mw && mw->grabIndex)
{
CompWindow *w;
@@ -765,6 +831,7 @@ index 1a4bbda..bee51d8 100644
int wWidth, wHeight;
- MOVE_DISPLAY (s->display);
++ fprintf(stderr, "in handling event motion\n");
- w = md->w;
+ w = mw->w;
@@ -781,7 +848,7 @@ index 1a4bbda..bee51d8 100644
if (w->type & CompWindowTypeFullscreenMask)
{
-@@ -390,8 +547,8 @@ moveHandleMotionEvent (CompScreen *s,
+@@ -390,8 +548,8 @@ moveHandleMotionEvent (CompScreen *s,
XRectangle workArea;
int min, max;
@@ -792,7 +859,7 @@ index 1a4bbda..bee51d8 100644
getWorkareaForOutput (s,
outputDeviceForWindow (w),
-@@ -399,13 +556,13 @@ moveHandleMotionEvent (CompScreen *s,
+@@ -399,13 +557,13 @@ moveHandleMotionEvent (CompScreen *s,
if (md->opt[MOVE_DISPLAY_OPTION_CONSTRAIN_Y].value.b)
{
@@ -809,7 +876,7 @@ index 1a4bbda..bee51d8 100644
{
int x, y, width, height;
int status;
-@@ -415,16 +572,16 @@ moveHandleMotionEvent (CompScreen *s,
+@@ -415,16 +573,16 @@ moveHandleMotionEvent (CompScreen *s,
width = wWidth + w->input.left + w->input.right;
height = w->input.top ? w->input.top : 1;
@@ -829,7 +896,7 @@ index 1a4bbda..bee51d8 100644
x, y - dy,
width, height);
-@@ -436,7 +593,7 @@ moveHandleMotionEvent (CompScreen *s,
+@@ -436,7 +594,7 @@ moveHandleMotionEvent (CompScreen *s,
while (dy && status != RectangleIn)
{
@@ -838,7 +905,7 @@ index 1a4bbda..bee51d8 100644
x, y,
width, height);
-@@ -448,7 +605,7 @@ moveHandleMotionEvent (CompScreen *s,
+@@ -448,7 +606,7 @@ moveHandleMotionEvent (CompScreen *s,
}
else
{
@@ -847,7 +914,7 @@ index 1a4bbda..bee51d8 100644
}
}
}
-@@ -471,7 +628,7 @@ moveHandleMotionEvent (CompScreen *s,
+@@ -471,7 +629,7 @@ moveHandleMotionEvent (CompScreen *s,
w->saveWc.x = xRoot - (width >> 1);
w->saveWc.y = yRoot + (w->input.top >> 1);
@@ -856,7 +923,7 @@ index 1a4bbda..bee51d8 100644
maximizeWindow (w, 0);
-@@ -538,10 +695,6 @@ moveHandleMotionEvent (CompScreen *s,
+@@ -538,10 +696,8 @@ moveHandleMotionEvent (CompScreen *s,
if (dx || dy)
{
@@ -864,10 +931,12 @@ index 1a4bbda..bee51d8 100644
- wX + dx - w->attrib.x,
- wY + dy - w->attrib.y,
- TRUE, FALSE);
++
++ moveWindow (w, dx, dy, TRUE, FALSE);
if (md->opt[MOVE_DISPLAY_OPTION_LAZY_POSITIONING].value.b)
{
-@@ -556,8 +709,8 @@ moveHandleMotionEvent (CompScreen *s,
+@@ -556,8 +712,8 @@ moveHandleMotionEvent (CompScreen *s,
syncWindowPosition (w);
}
@@ -878,7 +947,7 @@ index 1a4bbda..bee51d8 100644
}
}
}
-@@ -567,21 +720,26 @@ moveHandleEvent (CompDisplay *d,
+@@ -567,21 +723,26 @@ moveHandleEvent (CompDisplay *d,
XEvent *event)
{
CompScreen *s;
@@ -909,7 +978,7 @@ index 1a4bbda..bee51d8 100644
{
CompAction *action;
int opt = MOVE_DISPLAY_OPTION_INITIATE_BUTTON;
-@@ -597,9 +755,10 @@ moveHandleEvent (CompDisplay *d,
+@@ -597,9 +758,10 @@ moveHandleEvent (CompDisplay *d,
s = findScreenAtDisplay (d, event->xkey.root);
if (s)
{
@@ -922,7 +991,7 @@ index 1a4bbda..bee51d8 100644
{
int i;
-@@ -619,13 +778,15 @@ moveHandleEvent (CompDisplay *d,
+@@ -619,13 +781,15 @@ moveHandleEvent (CompDisplay *d,
case MotionNotify:
s = findScreenAtDisplay (d, event->xmotion.root);
if (s)
@@ -940,7 +1009,7 @@ index 1a4bbda..bee51d8 100644
break;
case ClientMessage:
if (event->xclient.message_type == d->wmMoveResizeAtom)
-@@ -638,7 +799,7 @@ moveHandleEvent (CompDisplay *d,
+@@ -638,7 +802,7 @@ moveHandleEvent (CompDisplay *d,
w = findWindowAtDisplay (d, event->xclient.window);
if (w)
{
@@ -949,7 +1018,7 @@ index 1a4bbda..bee51d8 100644
int xRoot, yRoot;
int option;
-@@ -659,15 +820,36 @@ moveHandleEvent (CompDisplay *d,
+@@ -659,15 +823,36 @@ moveHandleEvent (CompDisplay *d,
unsigned int mods;
Window root, child;
int i;
@@ -991,7 +1060,7 @@ index 1a4bbda..bee51d8 100644
{
o[1].type = CompOptionTypeInt;
o[1].name = "modifiers";
-@@ -686,17 +868,22 @@ moveHandleEvent (CompDisplay *d,
+@@ -686,17 +871,22 @@ moveHandleEvent (CompDisplay *d,
o[4].value.i = event->xclient.data.l[3] ?
event->xclient.data.l[3] : -1;
@@ -1017,7 +1086,7 @@ index 1a4bbda..bee51d8 100644
{
if (md->w->id == event->xclient.window)
{
-@@ -711,39 +898,91 @@ moveHandleEvent (CompDisplay *d,
+@@ -711,39 +901,93 @@ moveHandleEvent (CompDisplay *d,
&md->opt[option].value.action,
CompActionStateCancel, NULL, 0);
}
@@ -1079,6 +1148,8 @@ index 1a4bbda..bee51d8 100644
+ {
+ XDeviceMotionEvent* mev = (XDeviceMotionEvent*)event;
+
++ fprintf(stderr, "got motion\n");
++
+ dev = compFindDeviceById(d, mev->deviceid);
+ s = findScreenAtDisplay(d, mev->root);
+ moveHandleMotionEvent(s, dev, dev->pointerX, dev->pointerY);
@@ -1116,7 +1187,7 @@ index 1a4bbda..bee51d8 100644
break;
}
-@@ -762,14 +1001,15 @@ movePaintWindow (CompWindow *w,
+@@ -762,14 +1006,15 @@ movePaintWindow (CompWindow *w,
WindowPaintAttrib sAttrib;
CompScreen *s = w->screen;
Bool status;
@@ -1136,7 +1207,7 @@ index 1a4bbda..bee51d8 100644
{
/* modify opacity of windows that are not active */
sAttrib = *attrib;
-@@ -871,15 +1111,13 @@ moveInitDisplay (CompPlugin *p,
+@@ -871,15 +1116,13 @@ moveInitDisplay (CompPlugin *p,
md->moveOpacity =
(md->opt[MOVE_DISPLAY_OPTION_OPACITY].value.i * OPAQUE) / 100;
@@ -1155,7 +1226,7 @@ index 1a4bbda..bee51d8 100644
WRAP (md, d, handleEvent, moveHandleEvent);
d->base.privates[displayPrivateIndex].ptr = md;
-@@ -899,6 +1137,7 @@ moveFiniDisplay (CompPlugin *p,
+@@ -899,6 +1142,7 @@ moveFiniDisplay (CompPlugin *p,
compFiniDisplayOptions (d, md->opt, MOVE_DISPLAY_OPTION_NUM);
@@ -1163,7 +1234,7 @@ index 1a4bbda..bee51d8 100644
free (md);
}
-@@ -914,8 +1153,6 @@ moveInitScreen (CompPlugin *p,
+@@ -914,8 +1158,6 @@ moveInitScreen (CompPlugin *p,
if (!ms)
return FALSE;
@@ -1173,7 +1244,7 @@ index 1a4bbda..bee51d8 100644
WRAP (ms, s, paintWindow, movePaintWindow);
diff --git a/plugins/resize.c b/plugins/resize.c
-index 47d46eb..75a8569 100644
+index 47d46eb..36dfd25 100644
--- a/plugins/resize.c
+++ b/plugins/resize.c
@@ -33,6 +33,7 @@
@@ -1239,7 +1310,7 @@ index 47d46eb..75a8569 100644
WindowResizeNotifyProc windowResizeNotify;
PaintOutputProc paintOutput;
PaintWindowProc paintWindow;
-@@ -135,27 +151,120 @@ typedef struct _ResizeScreen {
+@@ -135,27 +151,118 @@ typedef struct _ResizeScreen {
#define NUM_OPTIONS(d) (sizeof ((d)->opt) / sizeof (CompOption))
@@ -1309,8 +1380,6 @@ index 47d46eb..75a8569 100644
+ XQueryDevicePointer(d->display, dev->dev, w->screen->root,
+ &root, &child,
+ &rx, &ry, &winx, &winy, &mask);
-+ if (mask != mods)
-+ continue;
+
+ if (!closest)
+ {
@@ -1370,7 +1439,7 @@ index 47d46eb..75a8569 100644
}
}
-@@ -176,20 +285,23 @@ resizeGetStretchScale (CompWindow *w,
+@@ -176,20 +283,23 @@ resizeGetStretchScale (CompWindow *w,
static void
resizeGetStretchRectangle (CompDisplay *d,
@@ -1400,7 +1469,7 @@ index 47d46eb..75a8569 100644
}
static void
-@@ -250,61 +362,104 @@ resizeCursorFromResizeMask (CompScreen *s,
+@@ -250,61 +360,104 @@ resizeCursorFromResizeMask (CompScreen *s,
}
static void
@@ -1522,7 +1591,7 @@ index 47d46eb..75a8569 100644
}
static Bool
-@@ -316,6 +471,7 @@ resizeInitiate (CompDisplay *d,
+@@ -316,6 +469,7 @@ resizeInitiate (CompDisplay *d,
{
CompWindow *w;
Window xid;
@@ -1530,7 +1599,7 @@ index 47d46eb..75a8569 100644
RESIZE_DISPLAY (d);
-@@ -326,18 +482,30 @@ resizeInitiate (CompDisplay *d,
+@@ -326,18 +480,30 @@ resizeInitiate (CompDisplay *d,
{
unsigned int mask;
int x, y;
@@ -1565,7 +1634,7 @@ index 47d46eb..75a8569 100644
/* Initiate the resize in the direction suggested by the
* sector of the window the mouse is in, eg drag in top left
* will resize up and to the left. Keyboard resize starts out
-@@ -373,7 +541,12 @@ resizeInitiate (CompDisplay *d,
+@@ -373,7 +539,12 @@ resizeInitiate (CompDisplay *d,
if (otherScreenGrabExist (w->screen, "resize", 0))
return FALSE;
@@ -1579,7 +1648,7 @@ index 47d46eb..75a8569 100644
return FALSE;
if (w->type & (CompWindowTypeDesktopMask |
-@@ -390,34 +563,88 @@ resizeInitiate (CompDisplay *d,
+@@ -390,34 +561,88 @@ resizeInitiate (CompDisplay *d,
if (w->shaded)
mask &= ~(ResizeUpMask | ResizeDownMask);
@@ -1680,7 +1749,7 @@ index 47d46eb..75a8569 100644
break;
}
}
-@@ -431,14 +658,14 @@ resizeInitiate (CompDisplay *d,
+@@ -431,14 +656,14 @@ resizeInitiate (CompDisplay *d,
index = RESIZE_DISPLAY_OPTION_NORMAL_MATCH + i;
if (matchEval (&rd->opt[index].value.match, w))
{
@@ -1697,7 +1766,7 @@ index 47d46eb..75a8569 100644
{
Cursor cursor;
-@@ -451,14 +678,17 @@ resizeInitiate (CompDisplay *d,
+@@ -451,14 +676,17 @@ resizeInitiate (CompDisplay *d,
cursor = resizeCursorFromResizeMask (w->screen, mask);
}
@@ -1718,7 +1787,7 @@ index 47d46eb..75a8569 100644
(w->screen->windowGrabNotify) (w, x, y, state,
CompWindowGrabResizeMask |
-@@ -470,7 +700,7 @@ resizeInitiate (CompDisplay *d,
+@@ -470,7 +698,7 @@ resizeInitiate (CompDisplay *d,
/* using the paint rectangle is enough here
as we don't have any stretch yet */
@@ -1727,7 +1796,7 @@ index 47d46eb..75a8569 100644
resizeDamageRectangle (w->screen, &box);
if (state & CompActionStateInitKey)
-@@ -480,7 +710,13 @@ resizeInitiate (CompDisplay *d,
+@@ -480,7 +708,13 @@ resizeInitiate (CompDisplay *d,
xRoot = w->serverX + (w->serverWidth / 2);
yRoot = w->serverY + (w->serverHeight / 2);
@@ -1742,7 +1811,7 @@ index 47d46eb..75a8569 100644
}
}
}
-@@ -495,24 +731,43 @@ resizeTerminate (CompDisplay *d,
+@@ -495,24 +729,43 @@ resizeTerminate (CompDisplay *d,
CompOption *option,
int nOption)
{
@@ -1795,7 +1864,7 @@ index 47d46eb..75a8569 100644
mask = CWX | CWY | CWWidth | CWHeight;
}
-@@ -522,18 +777,18 @@ resizeTerminate (CompDisplay *d,
+@@ -522,18 +775,18 @@ resizeTerminate (CompDisplay *d,
XRectangle geometry;
if (state & CompActionStateCancel)
@@ -1820,7 +1889,7 @@ index 47d46eb..75a8569 100644
resizeDamageRectangle (w->screen, &box);
}
-@@ -562,16 +817,47 @@ resizeTerminate (CompDisplay *d,
+@@ -562,16 +815,47 @@ resizeTerminate (CompDisplay *d,
configureXWindow (w, mask, &xwc);
}
@@ -1874,7 +1943,7 @@ index 47d46eb..75a8569 100644
}
action->state &= ~(CompActionStateTermKey | CompActionStateTermButton);
-@@ -580,26 +866,29 @@ resizeTerminate (CompDisplay *d,
+@@ -580,26 +864,29 @@ resizeTerminate (CompDisplay *d,
}
static void
@@ -1914,7 +1983,7 @@ index 47d46eb..75a8569 100644
CWX | CWY | CWWidth | CWHeight,
&xwc);
}
-@@ -607,14 +896,20 @@ resizeUpdateWindowSize (CompDisplay *d)
+@@ -607,14 +894,20 @@ resizeUpdateWindowSize (CompDisplay *d)
static void
resizeHandleKeyEvent (CompScreen *s,
@@ -1937,7 +2006,7 @@ index 47d46eb..75a8569 100644
int widthInc, heightInc, i;
widthInc = w->sizeHints.width_inc;
-@@ -631,11 +926,17 @@ resizeHandleKeyEvent (CompScreen *s,
+@@ -631,11 +924,17 @@ resizeHandleKeyEvent (CompScreen *s,
if (keycode != rd->key[i])
continue;
@@ -1959,7 +2028,7 @@ index 47d46eb..75a8569 100644
}
else
{
-@@ -649,11 +950,16 @@ resizeHandleKeyEvent (CompScreen *s,
+@@ -649,11 +948,16 @@ resizeHandleKeyEvent (CompScreen *s,
x = left + width * (rKeys[i].dx + 1) / 2;
y = top + height * (rKeys[i].dy + 1) / 2;
@@ -1979,7 +2048,7 @@ index 47d46eb..75a8569 100644
}
break;
}
-@@ -662,24 +968,35 @@ resizeHandleKeyEvent (CompScreen *s,
+@@ -662,24 +966,35 @@ resizeHandleKeyEvent (CompScreen *s,
static void
resizeHandleMotionEvent (CompScreen *s,
@@ -2024,7 +2093,7 @@ index 47d46eb..75a8569 100644
int xDist, yDist;
int minPointerOffsetX, minPointerOffsetY;
-@@ -702,52 +1019,54 @@ resizeHandleMotionEvent (CompScreen *s,
+@@ -702,52 +1017,54 @@ resizeHandleMotionEvent (CompScreen *s,
if (abs (xDist) > minPointerOffsetX)
{
if (xDist > 0)
@@ -2094,7 +2163,7 @@ index 47d46eb..75a8569 100644
}
}
else
-@@ -755,63 +1074,72 @@ resizeHandleMotionEvent (CompScreen *s,
+@@ -755,63 +1072,72 @@ resizeHandleMotionEvent (CompScreen *s,
/* only accumulate pointer movement if a mask is
already set as we don't have a use for the
difference information otherwise */
@@ -2199,7 +2268,7 @@ index 47d46eb..75a8569 100644
}
}
-@@ -819,7 +1147,11 @@ static void
+@@ -819,7 +1145,11 @@ static void
resizeHandleEvent (CompDisplay *d,
XEvent *event)
{
@@ -2212,7 +2281,7 @@ index 47d46eb..75a8569 100644
RESIZE_DISPLAY (d);
-@@ -827,51 +1159,62 @@ resizeHandleEvent (CompDisplay *d,
+@@ -827,51 +1157,62 @@ resizeHandleEvent (CompDisplay *d,
case KeyPress:
s = findScreenAtDisplay (d, event->xkey.root);
if (s)
@@ -2286,7 +2355,7 @@ index 47d46eb..75a8569 100644
int option;
o[0].type = CompOptionTypeInt;
-@@ -901,15 +1244,35 @@ resizeHandleEvent (CompDisplay *d,
+@@ -901,15 +1242,35 @@ resizeHandleEvent (CompDisplay *d,
unsigned int mods;
Window root, child;
int xRoot, yRoot, i;
@@ -2327,7 +2396,7 @@ index 47d46eb..75a8569 100644
{
o[1].type = CompOptionTypeInt;
o[1].name = "modifiers";
-@@ -932,17 +1295,22 @@ resizeHandleEvent (CompDisplay *d,
+@@ -932,17 +1293,22 @@ resizeHandleEvent (CompDisplay *d,
o[5].value.i = event->xclient.data.l[3] ?
event->xclient.data.l[3] : -1;
@@ -2353,7 +2422,7 @@ index 47d46eb..75a8569 100644
{
if (rd->w->id == event->xclient.window)
{
-@@ -955,11 +1323,13 @@ resizeHandleEvent (CompDisplay *d,
+@@ -955,11 +1321,13 @@ resizeHandleEvent (CompDisplay *d,
resizeTerminate (d, &rd->opt[option].value.action,
CompActionStateCancel, NULL, 0);
}
@@ -2369,7 +2438,7 @@ index 47d46eb..75a8569 100644
{
int option;
-@@ -970,7 +1340,9 @@ resizeHandleEvent (CompDisplay *d,
+@@ -970,7 +1338,9 @@ resizeHandleEvent (CompDisplay *d,
}
break;
case UnmapNotify:
@@ -2380,7 +2449,7 @@ index 47d46eb..75a8569 100644
{
int option;
-@@ -980,6 +1352,43 @@ resizeHandleEvent (CompDisplay *d,
+@@ -980,6 +1350,43 @@ resizeHandleEvent (CompDisplay *d,
resizeTerminate (d, &rd->opt[option].value.action, 0, NULL, 0);
}
default:
@@ -2424,7 +2493,7 @@ index 47d46eb..75a8569 100644
break;
}
-@@ -987,16 +1396,17 @@ resizeHandleEvent (CompDisplay *d,
+@@ -987,16 +1394,17 @@ resizeHandleEvent (CompDisplay *d,
(*d->handleEvent) (d, event);
WRAP (rd, d, handleEvent, resizeHandleEvent);
@@ -2445,7 +2514,7 @@ index 47d46eb..75a8569 100644
}
}
}
-@@ -1008,6 +1418,8 @@ resizeWindowResizeNotify (CompWindow *w,
+@@ -1008,6 +1416,8 @@ resizeWindowResizeNotify (CompWindow *w,
int dwidth,
int dheight)
{
@@ -2454,7 +2523,7 @@ index 47d46eb..75a8569 100644
RESIZE_DISPLAY (w->screen->display);
RESIZE_SCREEN (w->screen);
-@@ -1015,12 +1427,22 @@ resizeWindowResizeNotify (CompWindow *w,
+@@ -1015,12 +1425,22 @@ resizeWindowResizeNotify (CompWindow *w,
(*w->screen->windowResizeNotify) (w, dx, dy, dwidth, dheight);
WRAP (rs, w->screen, windowResizeNotify, resizeWindowResizeNotify);
@@ -2479,7 +2548,7 @@ index 47d46eb..75a8569 100644
const ScreenPaintAttrib *sa,
const CompTransform *transform,
CompOutput *output,
-@@ -1029,8 +1451,11 @@ resizePaintRectangle (CompScreen *s,
+@@ -1029,8 +1449,11 @@ resizePaintRectangle (CompScreen *s,
{
BoxRec box;
CompTransform sTransform = *transform;
@@ -2492,7 +2561,7 @@ index 47d46eb..75a8569 100644
glPushMatrix ();
-@@ -1074,13 +1499,15 @@ resizePaintOutput (CompScreen *s,
+@@ -1074,13 +1497,15 @@ resizePaintOutput (CompScreen *s,
unsigned int mask)
{
Bool status;
@@ -2510,7 +2579,7 @@ index 47d46eb..75a8569 100644
mask |= PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS_MASK;
}
-@@ -1088,21 +1515,30 @@ resizePaintOutput (CompScreen *s,
+@@ -1088,21 +1513,30 @@ resizePaintOutput (CompScreen *s,
status = (*s->paintOutput) (s, sAttrib, transform, region, output, mask);
WRAP (rs, s, paintOutput, resizePaintOutput);
@@ -2552,7 +2621,7 @@ index 47d46eb..75a8569 100644
}
}
-@@ -1116,13 +1552,16 @@ resizePaintWindow (CompWindow *w,
+@@ -1116,13 +1550,16 @@ resizePaintWindow (CompWindow *w,
Region region,
unsigned int mask)
{
@@ -2572,7 +2641,7 @@ index 47d46eb..75a8569 100644
{
FragmentAttrib fragment;
CompTransform wTransform = *transform;
-@@ -1143,7 +1582,7 @@ resizePaintWindow (CompWindow *w,
+@@ -1143,7 +1580,7 @@ resizePaintWindow (CompWindow *w,
if (w->alpha || fragment.opacity != OPAQUE)
mask |= PAINT_WINDOW_TRANSLUCENT_MASK;
@@ -2581,7 +2650,7 @@ index 47d46eb..75a8569 100644
resizeGetStretchScale (w, &box, &xScale, &yScale);
xOrigin = w->attrib.x - w->input.left;
-@@ -1152,8 +1591,8 @@ resizePaintWindow (CompWindow *w,
+@@ -1152,8 +1589,8 @@ resizePaintWindow (CompWindow *w,
matrixTranslate (&wTransform, xOrigin, yOrigin, 0.0f);
matrixScale (&wTransform, xScale, yScale, 1.0f);
matrixTranslate (&wTransform,
@@ -2592,7 +2661,7 @@ index 47d46eb..75a8569 100644
0.0f);
glPushMatrix ();
-@@ -1179,16 +1618,19 @@ resizeDamageWindowRect (CompWindow *w,
+@@ -1179,16 +1616,19 @@ resizeDamageWindowRect (CompWindow *w,
Bool initial,
BoxPtr rect)
{
@@ -2615,7 +2684,7 @@ index 47d46eb..75a8569 100644
resizeDamageRectangle (w->screen, &box);
status = TRUE;
-@@ -1277,9 +1719,8 @@ resizeInitDisplay (CompPlugin *p,
+@@ -1277,9 +1717,8 @@ resizeInitDisplay (CompPlugin *p,
return FALSE;
}
@@ -2627,7 +2696,7 @@ index 47d46eb..75a8569 100644
rd->resizeNotifyAtom = XInternAtom (d->display,
"_COMPIZ_RESIZE_NOTIFY", 0);
-@@ -1309,6 +1750,7 @@ resizeFiniDisplay (CompPlugin *p,
+@@ -1309,6 +1748,7 @@ resizeFiniDisplay (CompPlugin *p,
compFiniDisplayOptions (d, rd->opt, RESIZE_DISPLAY_OPTION_NUM);
@@ -2635,7 +2704,7 @@ index 47d46eb..75a8569 100644
free (rd);
}
-@@ -1324,8 +1766,6 @@ resizeInitScreen (CompPlugin *p,
+@@ -1324,8 +1764,6 @@ resizeInitScreen (CompPlugin *p,
if (!rs)
return FALSE;
@@ -2645,7 +2714,7 @@ index 47d46eb..75a8569 100644
rs->rightCursor = XCreateFontCursor (s->display->display, XC_right_side);
rs->upCursor = XCreateFontCursor (s->display->display,
diff --git a/plugins/scale.c b/plugins/scale.c
-index 45ba294..841c30d 100644
+index 45ba294..e9dde08 100644
--- a/plugins/scale.c
+++ b/plugins/scale.c
@@ -47,6 +47,13 @@ static int scaleDisplayPrivateIndex;
@@ -2662,7 +2731,7 @@ index 45ba294..841c30d 100644
static CompOption *
scaleGetScreenOptions (CompPlugin *plugin,
CompScreen *screen,
-@@ -143,6 +150,165 @@ isScaleWin (CompWindow *w)
+@@ -143,6 +150,200 @@ isScaleWin (CompWindow *w)
return TRUE;
}
@@ -2671,6 +2740,41 @@ index 45ba294..841c30d 100644
+/* Device Management */
+
+static Bool
++scaleUpdateHoveredWindows (CompScreen *s)
++{
++ Window root_return;
++ Window child_return;
++ int rootX, rootY;
++ int winX, winY;
++ unsigned int maskReturn;
++ Bool status;
++ ScaleDevice *dev;
++
++ SCALE_SCREEN (s);
++
++ for (dev = ss->devices; dev; dev = dev->next)
++ {
++
++ status = XQueryDevicePointer (s->display->display, dev->dev->dev, s->root,
++ &root_return, &child_return,
++ &rootX, &rootY, &winX, &winY, &maskReturn);
++
++ if (!status || rootX > s->width || rootY > s->height ||
++ s->root != root_return)
++ return FALSE;
++
++
++ scaleSelectWindowAt (s,
++ dev->dev,
++ rootX,
++ rootY,
++ FALSE);
++
++ }
++ return TRUE;
++}
++
++static Bool
+scaleGrabDevice (CompScreen *s,
+ ScaleDevice *sDev)
+{
@@ -2828,7 +2932,7 @@ index 45ba294..841c30d 100644
static void
scaleActivateEvent (CompScreen *s,
Bool activating)
-@@ -309,6 +475,8 @@ setScaledPaintAttributes (CompWindow *w,
+@@ -309,6 +510,8 @@ setScaledPaintAttributes (CompWindow *w,
WindowPaintAttrib *attrib)
{
Bool drawScaled = FALSE;
@@ -2837,7 +2941,7 @@ index 45ba294..841c30d 100644
SCALE_SCREEN (w->screen);
SCALE_WINDOW (w);
-@@ -317,7 +485,19 @@ setScaledPaintAttributes (CompWindow *w,
+@@ -317,7 +520,19 @@ setScaledPaintAttributes (CompWindow *w,
{
SCALE_DISPLAY (w->screen->display);
@@ -2858,15 +2962,25 @@ index 45ba294..841c30d 100644
ss->opacity != OPAQUE &&
ss->state != SCALE_STATE_IN)
{
-@@ -1009,7 +1189,6 @@ sendDndStatusMessage (CompScreen *s,
+@@ -405,6 +620,8 @@ scalePaintWindow (CompWindow *w,
+ sw->ty / sw->scale - w->attrib.y,
+ 0.0f);
- XSendEvent (s->display->display, source, FALSE, 0, &xev);
- }
--
- static Bool
- scaleActionShouldToggle (CompDisplay *d,
- CompAction *action,
-@@ -1043,28 +1222,29 @@ scaleTerminate (CompDisplay *d,
++ updateMesh (w);
++
+ glPushMatrix ();
+ glLoadMatrixf (wTransform.m);
+
+@@ -867,6 +1084,8 @@ scalePaintOutput (CompScreen *s,
+ if (ss->state != SCALE_STATE_NONE)
+ mask |= PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS_MASK;
+
++ scaleUpdateHoveredWindows (s);
++
+ UNWRAP (ss, s, paintOutput);
+ status = (*s->paintOutput) (s, sAttrib, transform, region, output, mask);
+ WRAP (ss, s, paintOutput, scalePaintOutput);
+@@ -1043,28 +1262,30 @@ scaleTerminate (CompDisplay *d,
int nOption)
{
CompScreen *s;
@@ -2896,6 +3010,7 @@ index 45ba294..841c30d 100644
+ SCALE_SCREEN (s);
- if (ss->grabIndex)
++ if (!d->opt[COMP_DISPLAY_OPTION_REDIRECT_INPUT].value.b)
+ for (sDev = ss->devices; sDev; sDev = sDev->next)
{
- removeScreenGrab (s, ss->grabIndex, 0);
@@ -2905,7 +3020,7 @@ index 45ba294..841c30d 100644
}
if (ss->dndTarget)
-@@ -1098,9 +1278,25 @@ scaleTerminate (CompDisplay *d,
+@@ -1098,9 +1319,25 @@ scaleTerminate (CompDisplay *d,
}
else if (ss->state != SCALE_STATE_IN)
{
@@ -2934,7 +3049,7 @@ index 45ba294..841c30d 100644
}
ss->state = SCALE_STATE_IN;
-@@ -1158,6 +1354,7 @@ scaleInitiateCommon (CompScreen *s,
+@@ -1158,6 +1395,7 @@ scaleInitiateCommon (CompScreen *s,
int nOption)
{
CompMatch *match;
@@ -2942,7 +3057,7 @@ index 45ba294..841c30d 100644
SCALE_DISPLAY (s->display);
SCALE_SCREEN (s);
-@@ -1187,13 +1384,15 @@ scaleInitiateCommon (CompScreen *s,
+@@ -1187,13 +1425,15 @@ scaleInitiateCommon (CompScreen *s,
if (scaleEnsureDndRedirectWindow (s))
ss->grab = TRUE;
}
@@ -2962,7 +3077,7 @@ index 45ba294..841c30d 100644
if (ss->grab)
{
if (!sd->lastActiveNum)
-@@ -1201,8 +1400,8 @@ scaleInitiateCommon (CompScreen *s,
+@@ -1201,8 +1441,8 @@ scaleInitiateCommon (CompScreen *s,
sd->previousActiveWindow = s->display->activeWindow;
sd->lastActiveWindow = s->display->activeWindow;
@@ -2973,7 +3088,7 @@ index 45ba294..841c30d 100644
ss->state = SCALE_STATE_OUT;
-@@ -1365,12 +1564,31 @@ scaleInitiateOutput (CompDisplay *d,
+@@ -1365,12 +1605,31 @@ scaleInitiateOutput (CompDisplay *d,
}
static void
@@ -3007,7 +3122,7 @@ index 45ba294..841c30d 100644
{
CompWindow *old, *new;
-@@ -1389,21 +1607,25 @@ scaleSelectWindow (CompWindow *w)
+@@ -1389,21 +1648,25 @@ scaleSelectWindow (CompWindow *w)
static Bool
scaleSelectWindowAt (CompScreen *s,
@@ -3034,7 +3149,7 @@ index 45ba294..841c30d 100644
if (moveInputFocus)
{
-@@ -1413,18 +1635,47 @@ scaleSelectWindowAt (CompScreen *s,
+@@ -1413,18 +1676,47 @@ scaleSelectWindowAt (CompScreen *s,
moveInputFocusToWindow (w);
}
@@ -3084,7 +3199,7 @@ index 45ba294..841c30d 100644
int dx,
int dy)
-@@ -1496,7 +1747,13 @@ scaleMoveFocusWindow (CompScreen *s,
+@@ -1496,7 +1788,13 @@ scaleMoveFocusWindow (CompScreen *s,
SCALE_DISPLAY (s->display);
SCALE_SCREEN (s);
@@ -3099,7 +3214,7 @@ index 45ba294..841c30d 100644
sd->lastActiveNum = focus->activeNum;
sd->lastActiveWindow = focus->id;
-@@ -1527,7 +1784,7 @@ scaleRelayoutSlots (CompDisplay *d,
+@@ -1527,7 +1825,7 @@ scaleRelayoutSlots (CompDisplay *d,
if (layoutThumbs (s))
{
ss->state = SCALE_STATE_OUT;
@@ -3108,15 +3223,12 @@ index 45ba294..841c30d 100644
damageScreen (s);
}
}
-@@ -1633,6 +1890,7 @@ scaleHoverTimeout (void *closure)
- return FALSE;
- }
+@@ -1649,26 +1947,26 @@ scaleHandleEvent (CompDisplay *d,
+ {
+ SCALE_SCREEN (s);
-+
- static void
- scaleHandleEvent (CompDisplay *d,
- XEvent *event)
-@@ -1653,22 +1911,22 @@ scaleHandleEvent (CompDisplay *d,
+- if (ss->grabIndex)
++ if (ss->grabIndex && !d->opt[COMP_DISPLAY_OPTION_REDIRECT_INPUT].value.b)
{
if (event->xkey.keycode == sd->leftKeyCode)
{
@@ -3143,7 +3255,7 @@ index 45ba294..841c30d 100644
consumeEvent = TRUE;
}
}
-@@ -1693,6 +1951,7 @@ scaleHandleEvent (CompDisplay *d,
+@@ -1693,6 +1991,7 @@ scaleHandleEvent (CompDisplay *d,
o.value.i = s->root;
if (scaleSelectWindowAt (s,
@@ -3151,7 +3263,7 @@ index 45ba294..841c30d 100644
event->xbutton.x_root,
event->xbutton.y_root,
TRUE))
-@@ -1743,6 +2002,7 @@ scaleHandleEvent (CompDisplay *d,
+@@ -1743,6 +2042,7 @@ scaleHandleEvent (CompDisplay *d,
focus = !d->opt[COMP_DISPLAY_OPTION_CLICK_TO_FOCUS].value.b;
scaleSelectWindowAt (s,
@@ -3159,7 +3271,7 @@ index 45ba294..841c30d 100644
event->xmotion.x_root,
event->xmotion.y_root,
focus);
-@@ -1797,7 +2057,7 @@ scaleHandleEvent (CompDisplay *d,
+@@ -1797,7 +2097,7 @@ scaleHandleEvent (CompDisplay *d,
scaleHoverTimeout,
s);
@@ -3168,7 +3280,7 @@ index 45ba294..841c30d 100644
}
else
{
-@@ -1841,7 +2101,120 @@ scaleHandleEvent (CompDisplay *d,
+@@ -1841,7 +2141,132 @@ scaleHandleEvent (CompDisplay *d,
}
}
default:
@@ -3182,16 +3294,28 @@ index 45ba294..841c30d 100644
+ {
+ SCALE_SCREEN (s);
+
-+ if (ss->grab)
++ if (ss->grab && !d->opt[COMP_DISPLAY_OPTION_REDIRECT_INPUT].value.b)
+ {
-+ if (kev->keycode == sd->leftKeyCode)
-+ scaleMoveFocusWindow (s, dev, -1, 0);
-+ else if (kev->keycode == sd->rightKeyCode)
-+ scaleMoveFocusWindow (s, dev, 1, 0);
-+ else if (kev->keycode == sd->upKeyCode)
-+ scaleMoveFocusWindow (s, dev, 0, -1);
-+ else if (kev->keycode == sd->downKeyCode)
-+ scaleMoveFocusWindow (s, dev, 0, 1);
++ if (event->xkey.keycode == sd->leftKeyCode)
++ {
++ scaleMoveFocusWindow (s, NULL, -1, 0);
++ consumeEvent = TRUE;
++ }
++ else if (event->xkey.keycode == sd->rightKeyCode)
++ {
++ scaleMoveFocusWindow (s, NULL, 1, 0);
++ consumeEvent = TRUE;
++ }
++ else if (event->xkey.keycode == sd->upKeyCode)
++ {
++ scaleMoveFocusWindow (s, NULL, 0, -1);
++ consumeEvent = TRUE;
++ }
++ else if (event->xkey.keycode == sd->downKeyCode)
++ {
++ scaleMoveFocusWindow (s, NULL, 0, 1);
++ consumeEvent = TRUE;
++ }
+ }
+ }
+ }
@@ -3290,7 +3414,52 @@ index 45ba294..841c30d 100644
}
if (!consumeEvent)
-@@ -2085,6 +2458,8 @@ scaleInitScreen (CompPlugin *p,
+@@ -1906,6 +2331,36 @@ scaleDamageWindowRect (CompWindow *w,
+ return status;
+ }
+
++static void
++scaleTransformMesh (CompWindow *w,
++ CompTransform *transform,
++ CompMesh *mesh,
++ int meshIter,
++ Bool needsProjection)
++{
++ SCALE_SCREEN (w->screen);
++ CompTransform scaleTransform = *transform;
++
++ if (TRUE)
++ {
++ SCALE_WINDOW (w);
++
++ if (sw->slot)
++ {
++ matrixTranslate (&scaleTransform, w->attrib.x, w->attrib.y, 0.0f);
++ matrixScale (&scaleTransform, sw->scale, sw->scale, 1.0f);
++ matrixTranslate (&scaleTransform,
++ sw->tx / sw->scale - w->attrib.x,
++ sw->ty / sw->scale - w->attrib.y,
++ 0.0f);
++ }
++ }
++
++ UNWRAP (ss, w->screen, transformMesh);
++ (*w->screen->transformMesh) (w, &scaleTransform, mesh, meshIter, needsProjection);
++ WRAP (ss, w->screen, transformMesh, scaleTransformMesh);
++}
++
+ static CompOption *
+ scaleGetDisplayOptions (CompPlugin *plugin,
+ CompDisplay *display,
+@@ -1962,6 +2417,7 @@ static const CompMetadataOptionInfo scaleDisplayOptionInfo[] = {
+ { "initiate_output_key", "key", 0, scaleInitiateOutput, scaleTerminate },
+ { "show_desktop", "bool", 0, 0, 0 },
+ { "relayout_slots", "action", 0, scaleRelayoutSlots, 0 },
++ { "double_click_time", "int", 0, 0, 0 },
+ { "key_bindings_toggle", "bool", 0, 0, 0 },
+ { "button_bindings_toggle", "bool", 0, 0, 0 }
+ };
+@@ -2085,6 +2541,8 @@ scaleInitScreen (CompPlugin *p,
ss->slots = 0;
ss->slotsSize = 0;
@@ -3299,6 +3468,22 @@ index 45ba294..841c30d 100644
ss->windows = 0;
ss->windowsSize = 0;
+@@ -2103,6 +2561,7 @@ scaleInitScreen (CompPlugin *p,
+ WRAP (ss, s, paintOutput, scalePaintOutput);
+ WRAP (ss, s, paintWindow, scalePaintWindow);
+ WRAP (ss, s, damageWindowRect, scaleDamageWindowRect);
++ WRAP (ss, s, transformMesh, scaleTransformMesh);
+
+ ss->cursor = XCreateFontCursor (s->display->display, XC_left_ptr);
+
+@@ -2122,6 +2581,7 @@ scaleFiniScreen (CompPlugin *p,
+ UNWRAP (ss, s, paintOutput);
+ UNWRAP (ss, s, paintWindow);
+ UNWRAP (ss, s, damageWindowRect);
++ UNWRAP (ss, s, transformMesh);
+
+ matchFini (&ss->match);
+
diff --git a/plugins/water.c b/plugins/water.c
index ef2f191..38c8283 100644
--- a/plugins/water.c
diff --git a/compiz/0003-Input-Redirection-in-Core.patch b/compiz/0003-Input-Redirection-Support-in-Core.patch
index bc8ab8b..ba36ea5 100644
--- a/compiz/0003-Input-Redirection-in-Core.patch
+++ b/compiz/0003-Input-Redirection-Support-in-Core.patch
@@ -1,32 +1,280 @@
-From 5c458f3158ab49dbee389f412d051cbc684575aa Mon Sep 17 00:00:00 2001
+From fe63963e04b392e70166fb6b98f28a8f30b36a67 Mon Sep 17 00:00:00 2001
From: Sam Spilsbury <Sam@XPS-SUSE.site>
-Date: Sun, 30 Nov 2008 22:25:26 +0900
-Subject: [PATCH] Input Redirection in Core
+Date: Wed, 10 Dec 2008 17:37:01 +0900
+Subject: [PATCH] Input Redirection Support in Core
---
- plugins/Makefile.am | 2 +-
- src/display.c | 47 ++++---
- src/event.c | 373 +++++++++++++++++++++++++++++++++++++++++++++++++++
- src/paint.c | 164 ++++++++++++++++++++++
- src/screen.c | 3 +
- src/window.c | 14 ++
- 6 files changed, 582 insertions(+), 21 deletions(-)
+ include/compiz-core.h | 131 ++++++++++++-----
+ metadata/core.xml.in.in | 23 +++-
+ src/display.c | 47 ++++---
+ src/event.c | 378 +++++++++++++++++++++++++++++++++++++++++++++++
+ src/paint.c | 164 ++++++++++++++++++++
+ src/screen.c | 3 +
+ src/window.c | 14 ++
+ 7 files changed, 703 insertions(+), 57 deletions(-)
-diff --git a/plugins/Makefile.am b/plugins/Makefile.am
-index c2b3cf0..5abcd5d 100644
---- a/plugins/Makefile.am
-+++ b/plugins/Makefile.am
-@@ -48,7 +48,7 @@ libpng_la_SOURCES = png.c
-
- libblur_la_DEPENDENCIES = $(top_builddir)/libdecoration/libdecoration.la
- libblur_la_LDFLAGS = -module -avoid-version -no-undefined
--libblur_la_LIBADD = $(top_builddir)/libdecoration/libdecoration.la -lGLU
-+libblur_la_LIBADD = $(top_builddir)/libdecoration/libdecoration.la
- libblur_la_SOURCES = blur.c
-
- libregex_la_LDFLAGS = -module -avoid-version -no-undefined
+diff --git a/include/compiz-core.h b/include/compiz-core.h
+index 709f2ac..fdc6ad3 100644
+--- a/include/compiz-core.h
++++ b/include/compiz-core.h
+@@ -48,6 +48,7 @@
+
+ #include <GL/gl.h>
+ #include <GL/glx.h>
++#include <GL/glu.h>
+
+ COMPIZ_BEGIN_DECLS
+
+@@ -81,7 +82,9 @@ typedef struct _CompCursor CompCursor;
+ typedef struct _CompMatch CompMatch;
+ typedef struct _CompOutput CompOutput;
+ typedef struct _CompWalker CompWalker;
++typedef struct _CompMesh CompMesh;
+ typedef struct _CompDevice CompDevice;
++typedef struct _CompTransform CompTransform;
+
+ /* virtual modifiers */
+
+@@ -806,7 +809,10 @@ removeFileWatch (CompFileWatchHandle handle);
+ #define COMP_DISPLAY_OPTION_RUN_TERMINAL_KEY 63
+ #define COMP_DISPLAY_OPTION_PING_DELAY 64
+ #define COMP_DISPLAY_OPTION_EDGE_DELAY 65
+-#define COMP_DISPLAY_OPTION_NUM 66
++#define COMP_DISPLAY_OPTION_MESH_MIN 66
++#define COMP_DISPLAY_OPTION_MESH_MAX 67
++#define COMP_DISPLAY_OPTION_REDIRECT_INPUT 68
++#define COMP_DISPLAY_OPTION_NUM 69
+
+ typedef void (*HandleEventProc) (CompDisplay *display,
+ XEvent *event);
+@@ -1271,6 +1277,13 @@ findCursorAtDisplay (CompDisplay *display);
+
+ /* event.c */
+
++typedef int32_t pixman_fixed_16_16_t;
++typedef pixman_fixed_16_16_t pixman_fixed_t;
++#define pixman_int_to_fixed(i) ((pixman_fixed_t) ((i) << 16))
++#define pixman_fixed_to_int(f) ((int) ((f) >> 16))
++#define xFixedToInt(f) pixman_fixed_to_int(f)
++#define IntToxFixed(i) pixman_int_to_fixed(i)
++
+ typedef struct _CompDelayedEdgeSettings
+ {
+ CompDisplay *d;
+@@ -1282,6 +1295,19 @@ typedef struct _CompDelayedEdgeSettings
+ unsigned int nOption;
+ } CompDelayedEdgeSettings;
+
++struct _CompMesh
++{
++ XTriangle *triangles;
++ int width;
++ int height;
++};
++
++typedef void (*TransformMeshProc) (CompWindow *window,
++ CompTransform *transform,
++ CompMesh *mesh,
++ int meshIter,
++ Bool needsProjection);
++
+ void
+ handleEvent (CompDisplay *display,
+ XEvent *event);
+@@ -1310,6 +1336,32 @@ void
+ clearTargetOutput (CompDisplay *display,
+ unsigned int mask);
+
++void
++transformMesh (CompWindow *w,
++ CompTransform *transform,
++ CompMesh *mesh,
++ int meshIter,
++ Bool needsProjection);
++
++void
++updateMesh (CompWindow *w);
++
++void
++setMeshMin (CompWindow *w,
++ int newMin,
++ Bool override);
++
++void
++setMeshMax (CompWindow *w,
++ int newMax,
++ Bool override);
++
++int
++incrementMesh (CompWindow *w);
++
++void
++decrementMesh (CompWindow *w, int meshIter);
++
+ /* paint.c */
+
+ #define MULTIPLY_USHORT(us1, us2) \
+@@ -1320,9 +1372,9 @@ clearTargetOutput (CompDisplay *display,
+
+ #define DEG2RAD (M_PI / 180.0f)
+
+-typedef struct _CompTransform {
++struct _CompTransform {
+ float m[16];
+-} CompTransform;
++};
+
+ typedef union _CompVector {
+ float v[4];
+@@ -1459,7 +1511,7 @@ struct _CompWalker {
+ #define PAINT_WINDOW_OCCLUSION_DETECTION_MASK (1 << 1)
+
+ /*
+- this flag indicates that the window ist painted with
++ this flag indicates that the window is painted with
+ an offset
+ */
+ #define PAINT_WINDOW_WITH_OFFSET_MASK (1 << 2)
+@@ -2236,6 +2288,8 @@ struct _CompScreen {
+ OutputChangeNotifyProc outputChangeNotify;
+
+ InitWindowWalkerProc initWindowWalker;
++
++ TransformMeshProc transformMesh;
+ };
+
+ #define GET_CORE_SCREEN(object) ((CompScreen *) (object))
+@@ -2695,10 +2749,46 @@ struct _CompWindow {
+ int texCoordSize;
+ int indexCount;
+
++ /* Input mesh parameters */
++
++ int nMesh;
++ int meshMin;
++ int meshMax;
++
+ /* must be set by addWindowGeometry */
+ DrawWindowGeometryProc drawWindowGeometry;
+ };
+
++struct _CompDevice {
++ XDevice *dev;
++ int id;
++ int use;
++ int paired;
++ XEventClass cls_btpress;
++ XEventClass cls_btrelease;
++ XEventClass cls_motion;
++ XEventClass cls_enter;
++ XEventClass cls_leave;
++ XEventClass cls_kpress;
++ XEventClass cls_krelease;
++ XEventClass cls_focusin;
++ XEventClass cls_focusout;
++
++ CompGrab *grabs;
++ int grabSize;
++ int maxGrab;
++
++ CompButtonGrab *buttonGrab;
++ int nButtonGrab;
++ CompKeyGrab *keyGrab;
++ int nKeyGrab;
++
++ int pointerX;
++ int pointerY;
++ int lastPointerX;
++ int lastPointerY;
++};
++
+ #define GET_CORE_WINDOW(object) ((CompWindow *) (object))
+ #define CORE_WINDOW(object) CompWindow *w = GET_CORE_WINDOW (object)
+
+@@ -3507,37 +3597,8 @@ compReadXmlChunkFromMetadataOptionInfo (const CompMetadataOptionInfo *info,
+ char *buffer,
+ int length);
+
++/* XInput device-related stuff */
+ /* devices.c */
+-struct _CompDevice {
+- XDevice *dev;
+- int id;
+- int use;
+- int paired;
+- XEventClass cls_btpress;
+- XEventClass cls_btrelease;
+- XEventClass cls_motion;
+- XEventClass cls_enter;
+- XEventClass cls_leave;
+- XEventClass cls_kpress;
+- XEventClass cls_krelease;
+- XEventClass cls_focusin;
+- XEventClass cls_focusout;
+-
+- CompGrab *grabs;
+- int grabSize;
+- int maxGrab;
+-
+- CompButtonGrab *buttonGrab;
+- int nButtonGrab;
+- CompKeyGrab *keyGrab;
+- int nKeyGrab;
+-
+- int pointerX;
+- int pointerY;
+- int lastPointerX;
+- int lastPointerY;
+-};
+-
+ Bool
+ compInitDeviceList (CompDisplay *display);
+
+@@ -3574,8 +3635,6 @@ otherDeviceGrabExist (CompDevice *dev,
+ void
+ compRegisterXIEvents(CompDisplay *d,
+ Window w);
+-
+-
+ COMPIZ_END_DECLS
+
+ #endif
+diff --git a/metadata/core.xml.in.in b/metadata/core.xml.in.in
+index 088cefe..42f4ea0 100644
+--- a/metadata/core.xml.in.in
++++ b/metadata/core.xml.in.in
+@@ -89,7 +89,28 @@
+ <max>10000</max>
+ </option>
+ </group>
+-
++ <group>
++ <_short>Input Settings</_short>
++ <option name="mesh_max" type="int">
++ <_short>Mesh Size Maximum</_short>
++ <_long>Maximum size for input mesh. A higher number is more accurate, but more expensive</_long>
++ <default>32</default>
++ <min>4</min>
++ <max>128</max>
++ </option>
++ <option name="mesh_min" type="int">
++ <_short>Mesh Size Minimum</_short>
++ <_long>Minimum size for input mesh. A higher number is more accurate, but more expensive</_long>
++ <default>32</default>
++ <min>4</min>
++ <max>128</max>
++ </option>
++ <option name="redirect_input" type="bool">
++ <_short>Enable input redirection</_short>
++ <_long>Enable input redirection. This is experimental</_long>
++ <default>true</default>
++ </option>
++ </group>
+ <group>
+ <_short>Key bindings</_short>
+ <option name="close_window_key" type="key">
diff --git a/src/display.c b/src/display.c
-index 5cd29ad..119ed65 100644
+index 5cd29ad..ed27986 100644
--- a/src/display.c
+++ b/src/display.c
@@ -681,7 +681,10 @@ const CompMetadataOptionInfo coreDisplayOptionInfo[COMP_DISPLAY_OPTION_NUM] = {
@@ -37,7 +285,7 @@ index 5cd29ad..119ed65 100644
+ { "edge_delay", "int", "<min>0</min>", 0, 0 },
+ { "mesh_max", "int", 0, 0, 0 },
+ { "mesh_min", "int", 0, 0, 0 },
-+ { "redirect_input", "bool", 0, 0, 0}
++ { "redirect_input", "bool", 0, 0, 0 }
};
CompOption *
@@ -123,7 +371,7 @@ index 5cd29ad..119ed65 100644
if (compCheckForError (dpy))
{
diff --git a/src/event.c b/src/event.c
-index 4dbcc1b..e71be1d 100644
+index 4dbcc1b..8702390 100644
--- a/src/event.c
+++ b/src/event.c
@@ -25,6 +25,7 @@
@@ -134,7 +382,7 @@ index 4dbcc1b..e71be1d 100644
#include <X11/Xlib.h>
#include <X11/Xatom.h>
-@@ -2588,3 +2589,375 @@ handleEvent (CompDisplay *d,
+@@ -2588,3 +2589,380 @@ handleEvent (CompDisplay *d,
break;
}
}
@@ -420,6 +668,11 @@ index 4dbcc1b..e71be1d 100644
+ int nTriangles;
+ matrixGetIdentity (&transform);
+
++ //fprintf(stderr, "options is %i\n", w->screen->display->opt[COMP_DISPLAY_OPTION_REDIRECT_INPUT].value.b);
++ //fprintf(stderr, "option mesh min is %i\n", w->screen->display->opt[COMP_DISPLAY_OPTION_MESH_MIN].value.i);
++ //fprintf(stderr, "option mesh max is %i\n", w->screen->display->opt[COMP_DISPLAY_OPTION_MESH_MAX].value.i);
++
++
+ if (!w->screen->display->opt[COMP_DISPLAY_OPTION_REDIRECT_INPUT].value.b)
+ return;
+
diff --git a/compiz/0004-Input-Redirection-Support-in-Plugins.patch b/compiz/0004-Input-Redirection-Support-in-Plugins.patch
new file mode 100644
index 0000000..6a08355
--- /dev/null
+++ b/compiz/0004-Input-Redirection-Support-in-Plugins.patch
@@ -0,0 +1,98 @@
+From 627839fc6db045a702e980cbd86ab6e7e029374d Mon Sep 17 00:00:00 2001
+From: Sam Spilsbury <Sam@XPS-SUSE.site>
+Date: Wed, 10 Dec 2008 17:40:10 +0900
+Subject: [PATCH] Input Redirection Support in Plugins
+
+---
+ include/compiz-scale.h | 3 +++
+ plugins/scale.c | 39 +++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 40 insertions(+), 2 deletions(-)
+
+diff --git a/include/compiz-scale.h b/include/compiz-scale.h
+index b09b53e..1611d4b 100644
+--- a/include/compiz-scale.h
++++ b/include/compiz-scale.h
+@@ -160,6 +160,9 @@ typedef struct _ScaleScreen {
+ int state;
+ int moreAdjust;
+
++ int clickTime;
++ Bool doubleClick;
++
+ Cursor cursor;
+
+ ScaleSlot *slots;
+diff --git a/plugins/scale.c b/plugins/scale.c
+index e9dde08..935c5dd 100644
+--- a/plugins/scale.c
++++ b/plugins/scale.c
+@@ -1427,6 +1427,7 @@ scaleInitiateCommon (CompScreen *s,
+ }
+ scaleCheckList (s);
+
++ if (!s->display->opt[COMP_DISPLAY_OPTION_REDIRECT_INPUT].value.b)
+ for (sDev = ss->devices; sDev; sDev = sDev->next)
+ {
+ ss->grab = scaleGrabDevice (s, sDev);
+@@ -1982,7 +1983,23 @@ scaleHandleEvent (CompDisplay *d,
+
+ SCALE_SCREEN (s);
+
+- if (ss->grabIndex && ss->state != SCALE_STATE_IN)
++ if (ss->clickTime == 0)
++ {
++ ss->clickTime = event->xbutton.time;
++ }
++ else if ((event->xbutton.time - ss->clickTime) <=
++ sd->opt[SCALE_DISPLAY_OPTION_DOUBLE_CLICK_TIME].value.i)
++ {
++
++ ss->doubleClick = TRUE;
++ }
++ else
++ {
++ ss->clickTime = event->xbutton.time;
++ ss->doubleClick = FALSE;
++ }
++
++ if (ss->grabIndex && ss->state != SCALE_STATE_IN && (ss->doubleClick))
+ {
+ CompOption o;
+
+@@ -2188,7 +2205,22 @@ scaleHandleEvent (CompDisplay *d,
+
+ SCALE_SCREEN (s);
+
+- if (ss->grab && ss->state != SCALE_STATE_IN)
++ if (ss->clickTime == 0)
++ {
++ ss->clickTime = event->xbutton.time;
++ }
++ else if (bev->time - ss->clickTime <=
++ sd->opt[SCALE_DISPLAY_OPTION_DOUBLE_CLICK_TIME].value.i)
++ {
++ ss->doubleClick = TRUE;
++ }
++ else
++ {
++ ss->clickTime = bev->time;
++ ss->doubleClick = FALSE;
++ }
++
++ if (ss->grab && ss->state != SCALE_STATE_IN && ss->doubleClick)
+ {
+ int nOption = 0;
+ CompOption o[2];
+@@ -2549,6 +2581,9 @@ scaleInitScreen (CompPlugin *p,
+ ss->opacity =
+ (OPAQUE * ss->opt[SCALE_SCREEN_OPTION_OPACITY].value.i) / 100;
+
++ ss->clickTime = 0;
++ ss->doubleClick = FALSE;
++
+ matchInit (&ss->match);
+
+ ss->layoutSlotsAndAssignWindows = layoutSlotsAndAssignWindows;
+--
+1.5.6
+
diff --git a/compiz/0004-Input-redirection-in-plugins.patch b/compiz/0004-Input-redirection-in-plugins.patch
deleted file mode 100644
index e52b537..0000000
--- a/compiz/0004-Input-redirection-in-plugins.patch
+++ /dev/null
@@ -1,350 +0,0 @@
-From d58adf7aff272dffe6408ddbf2263a90e167bebc Mon Sep 17 00:00:00 2001
-From: Sam Spilsbury <Sam@XPS-SUSE.site>
-Date: Sun, 30 Nov 2008 22:26:42 +0900
-Subject: [PATCH] Input redirection in plugins
-
----
- include/compiz-scale.h | 31 ++++++----
- plugins/scale.c | 146 +++++++++++++++++++++++++++++++++++++++++++----
- 2 files changed, 151 insertions(+), 26 deletions(-)
-
-diff --git a/include/compiz-scale.h b/include/compiz-scale.h
-index 118c27d..1611d4b 100644
---- a/include/compiz-scale.h
-+++ b/include/compiz-scale.h
-@@ -57,6 +57,14 @@ typedef struct _SlotArea {
- XRectangle workArea;
- } SlotArea;
-
-+typedef struct _ScaleDevice {
-+ CompDevice *dev;
-+ int grabIndex;
-+ Window hoveredWindow;
-+ Window selectedWindow;
-+ struct _ScaleDevice *next;
-+} ScaleDevice;
-+
- #define SCALE_DISPLAY_OPTION_ABI 0
- #define SCALE_DISPLAY_OPTION_INDEX 1
- #define SCALE_DISPLAY_OPTION_INITIATE_EDGE 2
-@@ -73,17 +81,10 @@ typedef struct _SlotArea {
- #define SCALE_DISPLAY_OPTION_INITIATE_OUTPUT_KEY 13
- #define SCALE_DISPLAY_OPTION_SHOW_DESKTOP 14
- #define SCALE_DISPLAY_OPTION_RELAYOUT 15
--#define SCALE_DISPLAY_OPTION_KEY_BINDINGS_TOGGLE 16
--#define SCALE_DISPLAY_OPTION_BUTTON_BINDINGS_TOGGLE 17
--#define SCALE_DISPLAY_OPTION_NUM 18
--
--typedef struct _ScaleDevice {
-- CompDevice *dev;
-- int grabIndex;
-- Window hoveredWindow;
-- Window selectedWindow;
-- struct _ScaleDevice *next;
--} ScaleDevice;
-+#define SCALE_DISPLAY_OPTION_DOUBLE_CLICK_TIME 16
-+#define SCALE_DISPLAY_OPTION_KEY_BINDINGS_TOGGLE 17
-+#define SCALE_DISPLAY_OPTION_BUTTON_BINDINGS_TOGGLE 18
-+#define SCALE_DISPLAY_OPTION_NUM 19
-
- typedef struct _ScaleDisplay {
- int screenPrivateIndex;
-@@ -140,6 +141,7 @@ typedef struct _ScaleScreen {
- PaintOutputProc paintOutput;
- PaintWindowProc paintWindow;
- DamageWindowRectProc damageWindowRect;
-+ TransformMeshProc transformMesh;
-
- ScaleLayoutSlotsAndAssignWindowsProc layoutSlotsAndAssignWindows;
- ScaleSetScaledPaintAttributesProc setScaledPaintAttributes;
-@@ -158,19 +160,22 @@ typedef struct _ScaleScreen {
- int state;
- int moreAdjust;
-
-+ int clickTime;
-+ Bool doubleClick;
-+
- Cursor cursor;
-
- ScaleSlot *slots;
- int slotsSize;
- int nSlots;
-
-+ ScaleDevice *devices;
-+
- /* only used for sorting */
- CompWindow **windows;
- int windowsSize;
- int nWindows;
-
-- ScaleDevice *devices;
--
- GLushort opacity;
-
- ScaleType type;
-diff --git a/plugins/scale.c b/plugins/scale.c
-index 841c30d..935c5dd 100644
---- a/plugins/scale.c
-+++ b/plugins/scale.c
-@@ -155,6 +155,41 @@ isScaleWin (CompWindow *w)
- /* Device Management */
-
- static Bool
-+scaleUpdateHoveredWindows (CompScreen *s)
-+{
-+ Window root_return;
-+ Window child_return;
-+ int rootX, rootY;
-+ int winX, winY;
-+ unsigned int maskReturn;
-+ Bool status;
-+ ScaleDevice *dev;
-+
-+ SCALE_SCREEN (s);
-+
-+ for (dev = ss->devices; dev; dev = dev->next)
-+ {
-+
-+ status = XQueryDevicePointer (s->display->display, dev->dev->dev, s->root,
-+ &root_return, &child_return,
-+ &rootX, &rootY, &winX, &winY, &maskReturn);
-+
-+ if (!status || rootX > s->width || rootY > s->height ||
-+ s->root != root_return)
-+ return FALSE;
-+
-+
-+ scaleSelectWindowAt (s,
-+ dev->dev,
-+ rootX,
-+ rootY,
-+ FALSE);
-+
-+ }
-+ return TRUE;
-+}
-+
-+static Bool
- scaleGrabDevice (CompScreen *s,
- ScaleDevice *sDev)
- {
-@@ -585,6 +620,8 @@ scalePaintWindow (CompWindow *w,
- sw->ty / sw->scale - w->attrib.y,
- 0.0f);
-
-+ updateMesh (w);
-+
- glPushMatrix ();
- glLoadMatrixf (wTransform.m);
-
-@@ -1047,6 +1084,8 @@ scalePaintOutput (CompScreen *s,
- if (ss->state != SCALE_STATE_NONE)
- mask |= PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS_MASK;
-
-+ scaleUpdateHoveredWindows (s);
-+
- UNWRAP (ss, s, paintOutput);
- status = (*s->paintOutput) (s, sAttrib, transform, region, output, mask);
- WRAP (ss, s, paintOutput, scalePaintOutput);
-@@ -1189,6 +1228,7 @@ sendDndStatusMessage (CompScreen *s,
-
- XSendEvent (s->display->display, source, FALSE, 0, &xev);
- }
-+
- static Bool
- scaleActionShouldToggle (CompDisplay *d,
- CompAction *action,
-@@ -1241,6 +1281,7 @@ scaleTerminate (CompDisplay *d,
-
- SCALE_SCREEN (s);
-
-+ if (!d->opt[COMP_DISPLAY_OPTION_REDIRECT_INPUT].value.b)
- for (sDev = ss->devices; sDev; sDev = sDev->next)
- {
- removeDeviceGrab (s, sDev->dev, sDev->grabIndex, NULL);
-@@ -1386,6 +1427,7 @@ scaleInitiateCommon (CompScreen *s,
- }
- scaleCheckList (s);
-
-+ if (!s->display->opt[COMP_DISPLAY_OPTION_REDIRECT_INPUT].value.b)
- for (sDev = ss->devices; sDev; sDev = sDev->next)
- {
- ss->grab = scaleGrabDevice (s, sDev);
-@@ -1890,7 +1932,6 @@ scaleHoverTimeout (void *closure)
- return FALSE;
- }
-
--
- static void
- scaleHandleEvent (CompDisplay *d,
- XEvent *event)
-@@ -1907,7 +1948,7 @@ scaleHandleEvent (CompDisplay *d,
- {
- SCALE_SCREEN (s);
-
-- if (ss->grabIndex)
-+ if (ss->grabIndex && !d->opt[COMP_DISPLAY_OPTION_REDIRECT_INPUT].value.b)
- {
- if (event->xkey.keycode == sd->leftKeyCode)
- {
-@@ -1942,7 +1983,23 @@ scaleHandleEvent (CompDisplay *d,
-
- SCALE_SCREEN (s);
-
-- if (ss->grabIndex && ss->state != SCALE_STATE_IN)
-+ if (ss->clickTime == 0)
-+ {
-+ ss->clickTime = event->xbutton.time;
-+ }
-+ else if ((event->xbutton.time - ss->clickTime) <=
-+ sd->opt[SCALE_DISPLAY_OPTION_DOUBLE_CLICK_TIME].value.i)
-+ {
-+
-+ ss->doubleClick = TRUE;
-+ }
-+ else
-+ {
-+ ss->clickTime = event->xbutton.time;
-+ ss->doubleClick = FALSE;
-+ }
-+
-+ if (ss->grabIndex && ss->state != SCALE_STATE_IN && (ss->doubleClick))
- {
- CompOption o;
-
-@@ -2110,16 +2167,28 @@ scaleHandleEvent (CompDisplay *d,
- {
- SCALE_SCREEN (s);
-
-- if (ss->grab)
-+ if (ss->grab && !d->opt[COMP_DISPLAY_OPTION_REDIRECT_INPUT].value.b)
- {
-- if (kev->keycode == sd->leftKeyCode)
-- scaleMoveFocusWindow (s, dev, -1, 0);
-- else if (kev->keycode == sd->rightKeyCode)
-- scaleMoveFocusWindow (s, dev, 1, 0);
-- else if (kev->keycode == sd->upKeyCode)
-- scaleMoveFocusWindow (s, dev, 0, -1);
-- else if (kev->keycode == sd->downKeyCode)
-- scaleMoveFocusWindow (s, dev, 0, 1);
-+ if (event->xkey.keycode == sd->leftKeyCode)
-+ {
-+ scaleMoveFocusWindow (s, NULL, -1, 0);
-+ consumeEvent = TRUE;
-+ }
-+ else if (event->xkey.keycode == sd->rightKeyCode)
-+ {
-+ scaleMoveFocusWindow (s, NULL, 1, 0);
-+ consumeEvent = TRUE;
-+ }
-+ else if (event->xkey.keycode == sd->upKeyCode)
-+ {
-+ scaleMoveFocusWindow (s, NULL, 0, -1);
-+ consumeEvent = TRUE;
-+ }
-+ else if (event->xkey.keycode == sd->downKeyCode)
-+ {
-+ scaleMoveFocusWindow (s, NULL, 0, 1);
-+ consumeEvent = TRUE;
-+ }
- }
- }
- }
-@@ -2136,7 +2205,22 @@ scaleHandleEvent (CompDisplay *d,
-
- SCALE_SCREEN (s);
-
-- if (ss->grab && ss->state != SCALE_STATE_IN)
-+ if (ss->clickTime == 0)
-+ {
-+ ss->clickTime = event->xbutton.time;
-+ }
-+ else if (bev->time - ss->clickTime <=
-+ sd->opt[SCALE_DISPLAY_OPTION_DOUBLE_CLICK_TIME].value.i)
-+ {
-+ ss->doubleClick = TRUE;
-+ }
-+ else
-+ {
-+ ss->clickTime = bev->time;
-+ ss->doubleClick = FALSE;
-+ }
-+
-+ if (ss->grab && ss->state != SCALE_STATE_IN && ss->doubleClick)
- {
- int nOption = 0;
- CompOption o[2];
-@@ -2279,6 +2363,36 @@ scaleDamageWindowRect (CompWindow *w,
- return status;
- }
-
-+static void
-+scaleTransformMesh (CompWindow *w,
-+ CompTransform *transform,
-+ CompMesh *mesh,
-+ int meshIter,
-+ Bool needsProjection)
-+{
-+ SCALE_SCREEN (w->screen);
-+ CompTransform scaleTransform = *transform;
-+
-+ if (TRUE)
-+ {
-+ SCALE_WINDOW (w);
-+
-+ if (sw->slot)
-+ {
-+ matrixTranslate (&scaleTransform, w->attrib.x, w->attrib.y, 0.0f);
-+ matrixScale (&scaleTransform, sw->scale, sw->scale, 1.0f);
-+ matrixTranslate (&scaleTransform,
-+ sw->tx / sw->scale - w->attrib.x,
-+ sw->ty / sw->scale - w->attrib.y,
-+ 0.0f);
-+ }
-+ }
-+
-+ UNWRAP (ss, w->screen, transformMesh);
-+ (*w->screen->transformMesh) (w, &scaleTransform, mesh, meshIter, needsProjection);
-+ WRAP (ss, w->screen, transformMesh, scaleTransformMesh);
-+}
-+
- static CompOption *
- scaleGetDisplayOptions (CompPlugin *plugin,
- CompDisplay *display,
-@@ -2335,6 +2449,7 @@ static const CompMetadataOptionInfo scaleDisplayOptionInfo[] = {
- { "initiate_output_key", "key", 0, scaleInitiateOutput, scaleTerminate },
- { "show_desktop", "bool", 0, 0, 0 },
- { "relayout_slots", "action", 0, scaleRelayoutSlots, 0 },
-+ { "double_click_time", "int", 0, 0, 0 },
- { "key_bindings_toggle", "bool", 0, 0, 0 },
- { "button_bindings_toggle", "bool", 0, 0, 0 }
- };
-@@ -2466,6 +2581,9 @@ scaleInitScreen (CompPlugin *p,
- ss->opacity =
- (OPAQUE * ss->opt[SCALE_SCREEN_OPTION_OPACITY].value.i) / 100;
-
-+ ss->clickTime = 0;
-+ ss->doubleClick = FALSE;
-+
- matchInit (&ss->match);
-
- ss->layoutSlotsAndAssignWindows = layoutSlotsAndAssignWindows;
-@@ -2478,6 +2596,7 @@ scaleInitScreen (CompPlugin *p,
- WRAP (ss, s, paintOutput, scalePaintOutput);
- WRAP (ss, s, paintWindow, scalePaintWindow);
- WRAP (ss, s, damageWindowRect, scaleDamageWindowRect);
-+ WRAP (ss, s, transformMesh, scaleTransformMesh);
-
- ss->cursor = XCreateFontCursor (s->display->display, XC_left_ptr);
-
-@@ -2497,6 +2616,7 @@ scaleFiniScreen (CompPlugin *p,
- UNWRAP (ss, s, paintOutput);
- UNWRAP (ss, s, paintWindow);
- UNWRAP (ss, s, damageWindowRect);
-+ UNWRAP (ss, s, transformMesh);
-
- matchFini (&ss->match);
-
---
-1.5.6
-
diff --git a/compiz/0005-Update-header-file-and-fix-move-and-resize.patch b/compiz/0005-Update-header-file-and-fix-move-and-resize.patch
deleted file mode 100644
index ddae1b7..0000000
--- a/compiz/0005-Update-header-file-and-fix-move-and-resize.patch
+++ /dev/null
@@ -1,283 +0,0 @@
-From 63736c16c558a71778e80ccf850521b32ceddf3f Mon Sep 17 00:00:00 2001
-From: Sam Spilsbury <Sam@XPS-SUSE.site>
-Date: Mon, 1 Dec 2008 07:49:07 +0900
-Subject: [PATCH] Update header file and fix move and resize
-
----
- include/compiz-core.h | 131 +++++++++++++++++++++++++++++++++++-------------
- plugins/move.c | 5 ++
- plugins/resize.c | 2 -
- 3 files changed, 100 insertions(+), 38 deletions(-)
-
-diff --git a/include/compiz-core.h b/include/compiz-core.h
-index 709f2ac..62038e1 100644
---- a/include/compiz-core.h
-+++ b/include/compiz-core.h
-@@ -48,6 +48,7 @@
-
- #include <GL/gl.h>
- #include <GL/glx.h>
-+#include <GL/glu.h>
-
- COMPIZ_BEGIN_DECLS
-
-@@ -81,7 +82,9 @@ typedef struct _CompCursor CompCursor;
- typedef struct _CompMatch CompMatch;
- typedef struct _CompOutput CompOutput;
- typedef struct _CompWalker CompWalker;
-+typedef struct _CompMesh CompMesh;
- typedef struct _CompDevice CompDevice;
-+typedef struct _CompTransform CompTransform;
-
- /* virtual modifiers */
-
-@@ -806,7 +809,10 @@ removeFileWatch (CompFileWatchHandle handle);
- #define COMP_DISPLAY_OPTION_RUN_TERMINAL_KEY 63
- #define COMP_DISPLAY_OPTION_PING_DELAY 64
- #define COMP_DISPLAY_OPTION_EDGE_DELAY 65
--#define COMP_DISPLAY_OPTION_NUM 66
-+#define COMP_DISPLAY_OPTION_MESH_MAX 66
-+#define COMP_DISPLAY_OPTION_MESH_MIN 67
-+#define COMP_DISPLAY_OPTION_REDIRECT_INPUT 68
-+#define COMP_DISPLAY_OPTION_NUM 69
-
- typedef void (*HandleEventProc) (CompDisplay *display,
- XEvent *event);
-@@ -1271,6 +1277,13 @@ findCursorAtDisplay (CompDisplay *display);
-
- /* event.c */
-
-+typedef int32_t pixman_fixed_16_16_t;
-+typedef pixman_fixed_16_16_t pixman_fixed_t;
-+#define pixman_int_to_fixed(i) ((pixman_fixed_t) ((i) << 16))
-+#define pixman_fixed_to_int(f) ((int) ((f) >> 16))
-+#define xFixedToInt(f) pixman_fixed_to_int(f)
-+#define IntToxFixed(i) pixman_int_to_fixed(i)
-+
- typedef struct _CompDelayedEdgeSettings
- {
- CompDisplay *d;
-@@ -1282,6 +1295,19 @@ typedef struct _CompDelayedEdgeSettings
- unsigned int nOption;
- } CompDelayedEdgeSettings;
-
-+struct _CompMesh
-+{
-+ XTriangle *triangles;
-+ int width;
-+ int height;
-+};
-+
-+typedef void (*TransformMeshProc) (CompWindow *window,
-+ CompTransform *transform,
-+ CompMesh *mesh,
-+ int meshIter,
-+ Bool needsProjection);
-+
- void
- handleEvent (CompDisplay *display,
- XEvent *event);
-@@ -1310,6 +1336,32 @@ void
- clearTargetOutput (CompDisplay *display,
- unsigned int mask);
-
-+void
-+transformMesh (CompWindow *w,
-+ CompTransform *transform,
-+ CompMesh *mesh,
-+ int meshIter,
-+ Bool needsProjection);
-+
-+void
-+updateMesh (CompWindow *w);
-+
-+void
-+setMeshMin (CompWindow *w,
-+ int newMin,
-+ Bool override);
-+
-+void
-+setMeshMax (CompWindow *w,
-+ int newMax,
-+ Bool override);
-+
-+int
-+incrementMesh (CompWindow *w);
-+
-+void
-+decrementMesh (CompWindow *w, int meshIter);
-+
- /* paint.c */
-
- #define MULTIPLY_USHORT(us1, us2) \
-@@ -1320,9 +1372,9 @@ clearTargetOutput (CompDisplay *display,
-
- #define DEG2RAD (M_PI / 180.0f)
-
--typedef struct _CompTransform {
-+struct _CompTransform {
- float m[16];
--} CompTransform;
-+};
-
- typedef union _CompVector {
- float v[4];
-@@ -1459,7 +1511,7 @@ struct _CompWalker {
- #define PAINT_WINDOW_OCCLUSION_DETECTION_MASK (1 << 1)
-
- /*
-- this flag indicates that the window ist painted with
-+ this flag indicates that the window is painted with
- an offset
- */
- #define PAINT_WINDOW_WITH_OFFSET_MASK (1 << 2)
-@@ -2236,6 +2288,8 @@ struct _CompScreen {
- OutputChangeNotifyProc outputChangeNotify;
-
- InitWindowWalkerProc initWindowWalker;
-+
-+ TransformMeshProc transformMesh;
- };
-
- #define GET_CORE_SCREEN(object) ((CompScreen *) (object))
-@@ -2695,10 +2749,46 @@ struct _CompWindow {
- int texCoordSize;
- int indexCount;
-
-+ /* Input mesh parameters */
-+
-+ int nMesh;
-+ int meshMin;
-+ int meshMax;
-+
- /* must be set by addWindowGeometry */
- DrawWindowGeometryProc drawWindowGeometry;
- };
-
-+struct _CompDevice {
-+ XDevice *dev;
-+ int id;
-+ int use;
-+ int paired;
-+ XEventClass cls_btpress;
-+ XEventClass cls_btrelease;
-+ XEventClass cls_motion;
-+ XEventClass cls_enter;
-+ XEventClass cls_leave;
-+ XEventClass cls_kpress;
-+ XEventClass cls_krelease;
-+ XEventClass cls_focusin;
-+ XEventClass cls_focusout;
-+
-+ CompGrab *grabs;
-+ int grabSize;
-+ int maxGrab;
-+
-+ CompButtonGrab *buttonGrab;
-+ int nButtonGrab;
-+ CompKeyGrab *keyGrab;
-+ int nKeyGrab;
-+
-+ int pointerX;
-+ int pointerY;
-+ int lastPointerX;
-+ int lastPointerY;
-+};
-+
- #define GET_CORE_WINDOW(object) ((CompWindow *) (object))
- #define CORE_WINDOW(object) CompWindow *w = GET_CORE_WINDOW (object)
-
-@@ -3507,37 +3597,8 @@ compReadXmlChunkFromMetadataOptionInfo (const CompMetadataOptionInfo *info,
- char *buffer,
- int length);
-
-+/* XInput device-related stuff */
- /* devices.c */
--struct _CompDevice {
-- XDevice *dev;
-- int id;
-- int use;
-- int paired;
-- XEventClass cls_btpress;
-- XEventClass cls_btrelease;
-- XEventClass cls_motion;
-- XEventClass cls_enter;
-- XEventClass cls_leave;
-- XEventClass cls_kpress;
-- XEventClass cls_krelease;
-- XEventClass cls_focusin;
-- XEventClass cls_focusout;
--
-- CompGrab *grabs;
-- int grabSize;
-- int maxGrab;
--
-- CompButtonGrab *buttonGrab;
-- int nButtonGrab;
-- CompKeyGrab *keyGrab;
-- int nKeyGrab;
--
-- int pointerX;
-- int pointerY;
-- int lastPointerX;
-- int lastPointerY;
--};
--
- Bool
- compInitDeviceList (CompDisplay *display);
-
-@@ -3574,8 +3635,6 @@ otherDeviceGrabExist (CompDevice *dev,
- void
- compRegisterXIEvents(CompDisplay *d,
- Window w);
--
--
- COMPIZ_END_DECLS
-
- #endif
-diff --git a/plugins/move.c b/plugins/move.c
-index bee51d8..014d4d1 100644
---- a/plugins/move.c
-+++ b/plugins/move.c
-@@ -527,6 +527,7 @@ moveHandleMotionEvent (CompScreen *s,
- int wX, wY;
- int wWidth, wHeight;
-
-+ fprintf(stderr, "in handling event motion\n");
-
- w = mw->w;
-
-@@ -696,6 +697,8 @@ moveHandleMotionEvent (CompScreen *s,
- if (dx || dy)
- {
-
-+ moveWindow (w, dx, dy, TRUE, FALSE);
-+
- if (md->opt[MOVE_DISPLAY_OPTION_LAZY_POSITIONING].value.b)
- {
- /* FIXME: This form of lazy positioning is broken and should
-@@ -949,6 +952,8 @@ moveHandleEvent (CompDisplay *d,
- {
- XDeviceMotionEvent* mev = (XDeviceMotionEvent*)event;
-
-+ fprintf(stderr, "got motion\n");
-+
- dev = compFindDeviceById(d, mev->deviceid);
- s = findScreenAtDisplay(d, mev->root);
- moveHandleMotionEvent(s, dev, dev->pointerX, dev->pointerY);
-diff --git a/plugins/resize.c b/plugins/resize.c
-index 75a8569..36dfd25 100644
---- a/plugins/resize.c
-+++ b/plugins/resize.c
-@@ -217,8 +217,6 @@ resizeFindDeviceAt(CompDisplay *d, CompWindow *w, int xRoot, int yRoot,
- XQueryDevicePointer(d->display, dev->dev, w->screen->root,
- &root, &child,
- &rx, &ry, &winx, &winy, &mask);
-- if (mask != mods)
-- continue;
-
- if (!closest)
- {
---
-1.5.6
-
diff --git a/compiz/0006-Add-relevant-options.patch b/compiz/0006-Add-relevant-options.patch
deleted file mode 100644
index 8f460e8..0000000
--- a/compiz/0006-Add-relevant-options.patch
+++ /dev/null
@@ -1,541 +0,0 @@
-From 5bb72fb6bbacf4852f2edc3bb8d62ce53939fc6e Mon Sep 17 00:00:00 2001
-From: Sam Spilsbury <Sam@XPS-SUSE.site>
-Date: Wed, 10 Dec 2008 11:48:37 +0900
-Subject: [PATCH] Add Relevant Options
-
----
- metadata/core.xml.in | 522 ++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 522 insertions(+), 0 deletions(-)
- create mode 100644 metadata/core.xml.in
-
-diff --git a/metadata/core.xml.in b/metadata/core.xml.in
-new file mode 100644
-index 0000000..793c588
---- /dev/null
-+++ b/metadata/core.xml.in
-@@ -0,0 +1,522 @@
-+<compiz>
-+ <core>
-+ <_short>General Options</_short>
-+ <_long>General compiz options</_long>
-+ <category>General</category>
-+ <display>
-+ <option name="abi" type="int" read_only="true"/>
-+ <option name="active_plugins" type="list">
-+ <_short>Active Plugins</_short>
-+ <_long>List of currently active plugins</_long>
-+ <type>string</type>
-+ <default>
-+ <value>core</value>
-+ </default>
-+ </option>
-+ <option name="audible_bell" type="bool">
-+ <_short>Audible Bell</_short>
-+ <_long>Audible system beep</_long>
-+ <default>true</default>
-+ </option>
-+ <option name="ignore_hints_when_maximized" type="bool">
-+ <_short>Ignore Hints When Maximized</_short>
-+ <_long>Ignore size increment and aspect hints when window is maximized</_long>
-+ <default>true</default>
-+ </option>
-+ <option name="hide_skip_taskbar_windows" type="bool">
-+ <_short>Hide Skip Taskbar Windows</_short>
-+ <_long>Hide windows not in taskbar when entering show desktop mode</_long>
-+ <default>true</default>
-+ </option>
-+ <option name="edge_delay" type="int">
-+ <_short>Edge Trigger Delay</_short>
-+ <_long>Duration the pointer must rest in a screen edge before an edge action is taken.</_long>
-+ <default>0</default>
-+ <min>0</min>
-+ <max>10000</max>
-+ </option>
-+ <option name="ping_delay" type="int">
-+ <_short>Ping Delay</_short>
-+ <_long>Interval between ping messages</_long>
-+ <default>5000</default>
-+ <min>1000</min>
-+ <max>30000</max>
-+ </option>
-+ <group>
-+ <_short>Display Settings</_short>
-+ <option name="texture_filter" type="int">
-+ <_short>Texture Filter</_short>
-+ <_long>Texture filtering</_long>
-+ <default>1</default>
-+ <min>0</min>
-+ <max>2</max>
-+ <desc>
-+ <value>0</value>
-+ <_name>Fast</_name>
-+ </desc>
-+ <desc>
-+ <value>1</value>
-+ <_name>Good</_name>
-+ </desc>
-+ <desc>
-+ <value>2</value>
-+ <_name>Best</_name>
-+ </desc>
-+ </option>
-+ </group>
-+ <group>
-+ <_short>Focus &amp; Raise Behaviour</_short>
-+ <option name="click_to_focus" type="bool">
-+ <_short>Click To Focus</_short>
-+ <_long>Click on window moves input focus to it</_long>
-+ <default>true</default>
-+ </option>
-+ <option name="raise_on_click" type="bool">
-+ <_short>Raise On Click</_short>
-+ <_long>Raise windows when clicked</_long>
-+ <default>true</default>
-+ </option>
-+ <option name="autoraise" type="bool">
-+ <_short>Auto-Raise</_short>
-+ <_long>Raise selected windows after interval</_long>
-+ <default>true</default>
-+ </option>
-+ <option name="autoraise_delay" type="int">
-+ <_short>Auto-Raise Delay</_short>
-+ <_long>Interval before raising selected windows</_long>
-+ <default>1000</default>
-+ <min>0</min>
-+ <max>10000</max>
-+ </option>
-+ </group>
-+
-+ <group>
-+ <_short>Key bindings</_short>
-+ <option name="close_window_key" type="key">
-+ <_short>Close Window</_short>
-+ <_long>Close active window</_long>
-+ <default>&lt;Alt&gt;F4</default>
-+ </option>
-+ <option name="close_window_button" type="button">
-+ <_short>Close Window</_short>
-+ <_long>Close active window</_long>
-+ </option>
-+ <option name="main_menu_key" type="key">
-+ <_short>Show Main Menu</_short>
-+ <_long>Show the main menu</_long>
-+ <default>&lt;Alt&gt;F1</default>
-+ </option>
-+ <option name="run_key" type="key">
-+ <_short>Run Dialog</_short>
-+ <_long>Show Run Application dialog</_long>
-+ <default>&lt;Alt&gt;F2</default>
-+ </option>
-+ <option name="raise_window_key" type="key">
-+ <_short>Raise Window</_short>
-+ <_long>Raise window above other windows</_long>
-+ </option>
-+ <option name="raise_window_button" type="button">
-+ <_short>Raise Window</_short>
-+ <_long>Raise window above other windows</_long>
-+ <default>&lt;Control&gt;Button6</default>
-+ </option>
-+ <option name="lower_window_key" type="key">
-+ <_short>Lower Window</_short>
-+ <_long>Lower window beneath other windows</_long>
-+ </option>
-+ <option name="lower_window_button" type="button">
-+ <_short>Lower Window</_short>
-+ <_long>Lower window beneath other windows</_long>
-+ <default>&lt;Alt&gt;Button6</default>
-+ </option>
-+ <option name="unmaximize_window_key" type="key">
-+ <_short>Unmaximize Window</_short>
-+ <_long>Unmaximize active window</_long>
-+ <default>&lt;Alt&gt;F5</default>
-+ </option>
-+ <option name="minimize_window_key" type="key">
-+ <_short>Minimize Window</_short>
-+ <_long>Minimize active window</_long>
-+ <default>&lt;Alt&gt;F9</default>
-+ </option>
-+ <option name="minimize_window_button" type="button">
-+ <_short>Minimize Window</_short>
-+ <_long>Minimize active window</_long>
-+ </option>
-+ <option name="maximize_window_key" type="key">
-+ <_short>Maximize Window</_short>
-+ <_long>Maximize active window</_long>
-+ <default>&lt;Alt&gt;F10</default>
-+ </option>
-+ <option name="maximize_window_horizontally_key" type="key">
-+ <_short>Maximize Window Horizontally</_short>
-+ <_long>Maximize active window horizontally</_long>
-+ </option>
-+ <option name="maximize_window_vertically_key" type="key">
-+ <_short>Maximize Window Vertically</_short>
-+ <_long>Maximize active window vertically</_long>
-+ </option>
-+ <option name="window_menu_button" type="button">
-+ <_short>Window Menu</_short>
-+ <_long>Window menu button binding</_long>
-+ <default>&lt;Alt&gt;Button3</default>
-+ </option>
-+ <option name="window_menu_key" type="key">
-+ <_short>Window Menu</_short>
-+ <_long>Window menu key binding</_long>
-+ <default>&lt;Alt&gt;space</default>
-+ </option>
-+ <option name="show_desktop_key" type="key">
-+ <_short>Show Desktop</_short>
-+ <_long>Hide all windows and focus desktop</_long>
-+ <default>&lt;Control&gt;&lt;Alt&gt;d</default>
-+ </option>
-+ <option name="show_desktop_edge" type="edge">
-+ <_short>Show Desktop</_short>
-+ <_long>Hide all windows and focus desktop</_long>
-+ <default/>
-+ </option>
-+ <option name="toggle_window_maximized_key" type="key">
-+ <_short>Toggle Window Maximized</_short>
-+ <_long>Toggle active window maximized</_long>
-+ </option>
-+ <option name="toggle_window_maximized_button" type="button">
-+ <_short>Toggle Window Maximized</_short>
-+ <_long>Toggle active window maximized</_long>
-+ </option>
-+ <option name="toggle_window_maximized_horizontally_key" type="key">
-+ <_short>Toggle Window Maximized Horizontally</_short>
-+ <_long>Toggle active window maximized horizontally</_long>
-+ </option>
-+ <option name="toggle_window_maximized_vertically_key" type="key">
-+ <_short>Toggle Window Maximized Vertically</_short>
-+ <_long>Toggle active window maximized vertically</_long>
-+ </option>
-+ <option name="toggle_window_shaded_key" type="key">
-+ <_short>Toggle Window Shaded</_short>
-+ <_long>Toggle active window shaded</_long>
-+ <default>&lt;Control&gt;&lt;Alt&gt;s</default>
-+ </option>
-+ <option name="slow_animations_key" type="key">
-+ <_short>Slow Animations</_short>
-+ <_long>Toggle use of slow animations</_long>
-+ </option>
-+ </group>
-+ <group>
-+ <_short>Commands</_short>
-+ <subgroup>
-+ <_short>Commands</_short>
-+ <option name="command0" type="string">
-+ <_short>Command line 0</_short>
-+ <_long>Command line to be executed in shell when run_command0 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command1" type="string">
-+ <_short>Command line 1</_short>
-+ <_long>Command line to be executed in shell when run_command1 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command2" type="string">
-+ <_short>Command line 2</_short>
-+ <_long>Command line to be executed in shell when run_command2 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command3" type="string">
-+ <_short>Command line 3</_short>
-+ <_long>Command line to be executed in shell when run_command3 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command4" type="string">
-+ <_short>Command line 4</_short>
-+ <_long>Command line to be executed in shell when run_command4 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command5" type="string">
-+ <_short>Command line 5</_short>
-+ <_long>Command line to be executed in shell when run_command5 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command6" type="string">
-+ <_short>Command line 6</_short>
-+ <_long>Command line to be executed in shell when run_command6 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command7" type="string">
-+ <_short>Command line 7</_short>
-+ <_long>Command line to be executed in shell when run_command7 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command8" type="string">
-+ <_short>Command line 8</_short>
-+ <_long>Command line to be executed in shell when run_command8 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command9" type="string">
-+ <_short>Command line 9</_short>
-+ <_long>Command line to be executed in shell when run_command9 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command10" type="string">
-+ <_short>Command line 10</_short>
-+ <_long>Command line to be executed in shell when run_command10 is invoked</_long>
-+ <default></default>
-+ </option>
-+ <option name="command11" type="string">
-+ <_short>Command line 11</_short>
-+ <_long>Command line to be executed in shell when run_command11 is invoked</_long>
-+ <default></default>
-+ </option>
-+ </subgroup>
-+ <subgroup>
-+ <_short>Key bindings</_short>
-+ <option name="run_command0_key" type="key">
-+ <_short>Run command 0</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command0</_long>
-+ </option>
-+ <option name="run_command1_key" type="key">
-+ <_short>Run command 1</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command1</_long>
-+ </option>
-+ <option name="run_command2_key" type="key">
-+ <_short>Run command 2</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command2</_long>
-+ </option>
-+ <option name="run_command3_key" type="key">
-+ <_short>Run command 3</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command3</_long>
-+ </option>
-+ <option name="run_command4_key" type="key">
-+ <_short>Run command 4</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command4</_long>
-+ </option>
-+ <option name="run_command5_key" type="key">
-+ <_short>Run command 5</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command5</_long>
-+ </option>
-+ <option name="run_command6_key" type="key">
-+ <_short>Run command 6</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command6</_long>
-+ </option>
-+ <option name="run_command7_key" type="key">
-+ <_short>Run command 7</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command7</_long>
-+ </option>
-+ <option name="run_command8_key" type="key">
-+ <_short>Run command 8</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command8</_long>
-+ </option>
-+ <option name="run_command9_key" type="key">
-+ <_short>Run command 9</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command9</_long>
-+ </option>
-+ <option name="run_command10_key" type="key">
-+ <_short>Run command 10</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command10</_long>
-+ </option>
-+ <option name="run_command11_key" type="key">
-+ <_short>Run command 11</_short>
-+ <_long>A keybinding that when invoked, will run the shell command identified by command11</_long>
-+ </option>
-+ </subgroup>
-+ <subgroup>
-+ <_short>Screenshot commands</_short>
-+ <option name="command_screenshot" type="string">
-+ <_short>Screenshot command line</_short>
-+ <_long>Screenshot command line</_long>
-+ <default>gnome-screenshot</default>
-+ </option>
-+ <option name="command_window_screenshot" type="string">
-+ <_short>Window screenshot command line</_short>
-+ <_long>Window screenshot command line</_long>
-+ <default>gnome-screenshot --window</default>
-+ </option>
-+ </subgroup>
-+ <subgroup>
-+ <_short>Screenshot key bindings</_short>
-+ <option name="run_command_screenshot_key" type="key">
-+ <_short>Take a screenshot</_short>
-+ <_long>Take a screenshot</_long>
-+ <default>Print</default>
-+ </option>
-+ <option name="run_command_window_screenshot_key" type="key">
-+ <_short>Take a screenshot of a window</_short>
-+ <_long>Take a screenshot of a window</_long>
-+ <default>&lt;Alt&gt;Print</default>
-+ </option>
-+ </subgroup>
-+ <subgroup>
-+ <_short>Run terminal command</_short>
-+ <option name="command_terminal" type="string">
-+ <_short>Terminal command line</_short>
-+ <_long>Terminal command line</_long>
-+ <default></default>
-+ </option>
-+ <option name="run_command_terminal_key" type="key">
-+ <_short>Open a terminal</_short>
-+ <_long>Open a terminal</_long>
-+ </option>
-+ </subgroup>
-+ </group>
-+ </display>
-+ <screen>
-+ <group>
-+ <_short>Desktop Size</_short>
-+ <option name="hsize" type="int">
-+ <_short>Horizontal Virtual Size</_short>
-+ <_long>Screen size multiplier for horizontal virtual size</_long>
-+ <default>4</default>
-+ <min>1</min>
-+ <max>32</max>
-+ </option>
-+ <option name="vsize" type="int">
-+ <_short>Vertical Virtual Size</_short>
-+ <_long>Screen size multiplier for vertical virtual size</_long>
-+ <default>1</default>
-+ <min>1</min>
-+ <max>32</max>
-+ </option>
-+ <option name="number_of_desktops" type="int">
-+ <_short>Number of Desktops</_short>
-+ <_long>Number of virtual desktops</_long>
-+ <default>1</default>
-+ <min>1</min>
-+ <max>36</max>
-+ </option>
-+ </group>
-+ <group>
-+ <_short>Display Settings</_short>
-+ <option name="lighting" type="bool">
-+ <_short>Lighting</_short>
-+ <_long>Use diffuse light when screen is transformed</_long>
-+ <default>true</default>
-+ </option>
-+ <option name="detect_refresh_rate" type="bool">
-+ <_short>Detect Refresh Rate</_short>
-+ <_long>Automatic detection of refresh rate</_long>
-+ <default>true</default>
-+ </option>
-+ <option name="refresh_rate" type="int">
-+ <_short>Refresh Rate</_short>
-+ <_long>The rate at which the screen is redrawn (times/second)</_long>
-+ <default>50</default>
-+ <min>1</min>
-+ <max>200</max>
-+ </option>
-+ <option name="detect_outputs" type="bool">
-+ <_short>Detect Outputs</_short>
-+ <_long>Automatic detection of output devices</_long>
-+ <default>true</default>
-+ </option>
-+ <option name="overlapping_outputs" type="int">
-+ <_short>Overlapping Output Handling</_short>
-+ <_long>Which one of overlapping output devices should be preferred</_long>
-+ <default>0</default>
-+ <min>0</min>
-+ <max>2</max>
-+ <desc>
-+ <value>0</value>
-+ <_name>Smart mode</_name>
-+ </desc>
-+ <desc>
-+ <value>1</value>
-+ <_name>Prefer larger output</_name>
-+ </desc>
-+ <desc>
-+ <value>2</value>
-+ <_name>Prefer smaller output</_name>
-+ </desc>
-+ </option>
-+ <option name="outputs" type="list">
-+ <_short>Outputs</_short>
-+ <_long>List of strings describing output devices</_long>
-+ <type>string</type>
-+ <default>
-+ <value>640x480+0+0</value>
-+ </default>
-+ </option>
-+ <option name="sync_to_vblank" type="bool">
-+ <_short>Sync To VBlank</_short>
-+ <_long>Only perform screen updates during vertical blanking period</_long>
-+ <default>true</default>
-+ </option>
-+ </group>
-+ <group>
-+ <_short>Input Settings</_short>
-+ <option name="mesh_max" type="int">
-+ <_short>Mesh Size Maximum</_short>
-+ <_long>Maximum size for input mesh. A higher number is more accurate, but more expensive</_long>
-+ <default>32</default>
-+ <min>4</min>
-+ <max>128</max>
-+ </option>
-+ <option name="mesh_min" type="int">
-+ <_short>Mesh Size Minimum</_short>
-+ <_long>Minimum size for input mesh. A higher number is more accurate, but more expensive</_long>
-+ <default>32</default>
-+ <min>4</min>
-+ <max>128</max>
-+ </option>
-+ <option name="redirect_input" type="bool">
-+ <_short>Enable input redirection</_short>
-+ <_long>Enable input redirection. This is experimental</_long>
-+ <default>true</default>
-+ </option>
-+ </group>
-+ <group>
-+ <_short>Focus &amp; Raise Behaviour</_short>
-+ <option name="focus_prevention_level" type="int">
-+ <_short>Focus Prevention Level</_short>
-+ <_long>Level of focus stealing prevention</_long>
-+ <min>0</min>
-+ <max>4</max>
-+ <default>1</default>
-+ <desc>
-+ <value>0</value>
-+ <_name>Off</_name>
-+ </desc>
-+ <desc>
-+ <value>1</value>
-+ <_name>Low</_name>
-+ </desc>
-+ <desc>
-+ <value>2</value>
-+ <_name>Normal</_name>
-+ </desc>
-+ <desc>
-+ <value>3</value>
-+ <_name>High</_name>
-+ </desc>
-+ <desc>
-+ <value>4</value>
-+ <_name>Very High</_name>
-+ </desc>
-+ </option>
-+ <option name="focus_prevention_match" type="match">
-+ <_short>Focus Prevention Windows</_short>
-+ <_long>Focus prevention windows</_long>
-+ <default>any</default>
-+ </option>
-+ </group>
-+ <option name="unredirect_fullscreen_windows" type="bool">
-+ <_short>Unredirect Fullscreen Windows</_short>
-+ <_long>Allow drawing of fullscreen windows to not be redirected to offscreen pixmaps</_long>
-+ <default>false</default>
-+ </option>
-+ <option name="default_icon" type="string">
-+ <_short>Default Icon</_short>
-+ <_long>Default window icon image</_long>
-+ <default>icon</default>
-+ </option>
-+ <option name="force_independent_output_painting" type="bool">
-+ <_short>Force independent output painting.</_short>
-+ <_long>Paint each output device independly, even if the output devices overlap</_long>
-+ <default>false</default>
-+ </option>
-+ <option name="texture_compression" type="bool">
-+ <_short>Texture Compression</_short>
-+ <_long>If available use compression for textures converted from images</_long>
-+ <default>true</default>
-+ </option>
-+ </screen>
-+ </core>
-+</compiz>
---
-1.5.6
-