diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2016-09-13 15:16:56 +0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2016-09-19 08:55:02 -0700 |
commit | 5998da7855750dd947288349a0b14e65db1e3c8c (patch) | |
tree | a718de563550846c3b8c38aa9fb88065b1ffbede | |
parent | daf48a3aba7d5c42d7156f0d0e2b1d8aae423303 (diff) |
dix: Incroduce CursorConfinedTo vfunc in Screen
This function will be called when a pointer is grabbed non-root window
set as the 'confineTo'. This will enable the ddx to handle the
confinement their own way.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | dix/events.c | 5 | ||||
-rw-r--r-- | include/scrnintstr.h | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/dix/events.c b/dix/events.c index 87f080e16..cc26ba5db 100644 --- a/dix/events.c +++ b/dix/events.c @@ -882,6 +882,8 @@ ConfineCursorToWindow(DeviceIntPtr pDev, WindowPtr pWin, Bool generateEvents, SyntheticMotion(pDev, pSprite->hot.x, pSprite->hot.y); } else { + ScreenPtr pScreen = pWin->drawable.pScreen; + #ifdef PANORAMIX if (!noPanoramiXExtension) { XineramaConfineCursorToWindow(pDev, pWin, generateEvents); @@ -893,6 +895,9 @@ ConfineCursorToWindow(DeviceIntPtr pDev, WindowPtr pWin, Bool generateEvents, : NullRegion; CheckPhysLimits(pDev, pSprite->current, generateEvents, confineToScreen, pWin->drawable.pScreen); + + if (*pScreen->CursorConfinedTo) + (*pScreen->CursorConfinedTo) (pDev, pScreen, pWin); } } diff --git a/include/scrnintstr.h b/include/scrnintstr.h index faf9f8d41..f898392fe 100644 --- a/include/scrnintstr.h +++ b/include/scrnintstr.h @@ -241,6 +241,10 @@ typedef void (*CursorWarpedToProcPtr) (DeviceIntPtr /* pDev */ , int /*x */ , int /*y */ ); +typedef void (*CurserConfinedToProcPtr) (DeviceIntPtr /* pDev */ , + ScreenPtr /*pScreen */ , + WindowPtr /*pWindow */ ); + typedef Bool (*CreateGCProcPtr) (GCPtr /*pGC */ ); typedef Bool (*CreateColormapProcPtr) (ColormapPtr /*pColormap */ ); @@ -563,6 +567,7 @@ typedef struct _Screen { RecolorCursorProcPtr RecolorCursor; SetCursorPositionProcPtr SetCursorPosition; CursorWarpedToProcPtr CursorWarpedTo; + CurserConfinedToProcPtr CursorConfinedTo; /* GC procedures */ |