From 5998da7855750dd947288349a0b14e65db1e3c8c Mon Sep 17 00:00:00 2001 From: Jonas Ådahl Date: Tue, 13 Sep 2016 15:16:56 +0800 Subject: dix: Incroduce CursorConfinedTo vfunc in Screen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Peter Hutterer Signed-off-by: Keith Packard --- dix/events.c | 5 +++++ include/scrnintstr.h | 5 +++++ 2 files changed, 10 insertions(+) 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 */ -- cgit v1.2.3