diff options
Diffstat (limited to 'xorg-server/hw/kdrive/src/kinput.c')
-rw-r--r-- | xorg-server/hw/kdrive/src/kinput.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/xorg-server/hw/kdrive/src/kinput.c b/xorg-server/hw/kdrive/src/kinput.c index 7f47a1da5..d5171a7f7 100644 --- a/xorg-server/hw/kdrive/src/kinput.c +++ b/xorg-server/hw/kdrive/src/kinput.c @@ -1918,6 +1918,8 @@ KdEnqueuePointerEvent(KdPointerInfo * pi, unsigned long flags, int rx, int ry, } else { dixflags = POINTER_ABSOLUTE; + if (flags & KD_POINTER_DESKTOP) + dixflags |= POINTER_DESKTOP; if (x != pi->dixdev->last.valuators[0] || y != pi->dixdev->last.valuators[1]) _KdEnqueuePointerEvent(pi, MotionNotify, x, y, z, 0, dixflags, @@ -2051,25 +2053,25 @@ KdCursorOffScreen(ScreenPtr *ppScreen, int *x, int *y) dx = KdScreenOrigin(pNewScreen)->x - KdScreenOrigin(pScreen)->x; dy = KdScreenOrigin(pNewScreen)->y - KdScreenOrigin(pScreen)->y; if (*x < 0) { - if (dx <= 0 && -dx < best_x) { + if (dx < 0 && -dx < best_x) { best_x = -dx; n_best_x = n; } } else if (*x >= pScreen->width) { - if (dx >= 0 && dx < best_x) { + if (dx > 0 && dx < best_x) { best_x = dx; n_best_x = n; } } if (*y < 0) { - if (dy <= 0 && -dy < best_y) { + if (dy < 0 && -dy < best_y) { best_y = -dy; n_best_y = n; } } else if (*y >= pScreen->height) { - if (dy >= 0 && dy < best_y) { + if (dy > 0 && dy < best_y) { best_y = dy; n_best_y = n; } |