diff options
Diffstat (limited to 'dix/events.c')
-rw-r--r-- | dix/events.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/dix/events.c b/dix/events.c index d3a33ea3f..427b891ae 100644 --- a/dix/events.c +++ b/dix/events.c @@ -597,6 +597,8 @@ XineramaConfineCursorToWindow(DeviceIntPtr pDev, int x, y, off_x, off_y, i; + assert(!noPanoramiXExtension); + if (!XineramaSetWindowPntrs(pDev, pWin)) return; @@ -1530,7 +1532,9 @@ ActivatePointerGrab(DeviceIntPtr mouse, GrabPtr grab, mouse->spriteInfo->sprite->hotPhys.y = 0; ConfineCursorToWindow(mouse, grab->confineTo, FALSE, TRUE); } - DoEnterLeaveEvents(mouse, mouse->id, oldWin, grab->window, NotifyGrab); + if (! (grabinfo->grab && oldWin == grabinfo->grab->window + && oldWin == grab->window)) + DoEnterLeaveEvents(mouse, mouse->id, oldWin, grab->window, NotifyGrab); mouse->valuator->motionHintWindow = NullWindow; if (syncEvents.playingEvents) grabinfo->grabTime = syncEvents.time; @@ -1640,7 +1644,9 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time, oldWin = keybd->focus->win; if (keybd->valuator) keybd->valuator->motionHintWindow = NullWindow; - if (oldWin) + if (oldWin && + ! (grabinfo->grab && oldWin == grabinfo->grab->window + && oldWin == grab->window)) DoFocusEvents(keybd, oldWin, grab->window, NotifyGrab); if (syncEvents.playingEvents) grabinfo->grabTime = syncEvents.time; |