Force pointer to stay on screen.
authorRay Strode <rstrode@redhat.com>
Fri, 19 Dec 2008 04:05:43 +0000 (23:05 -0500)
committerKristian Høgsberg <krh@redhat.com>
Fri, 19 Dec 2008 04:06:26 +0000 (23:06 -0500)
Without this change it's really easy to
accidentally send the pointer flying and not
be able to get it back.

egl-compositor.c

index b0e5552..a019454 100644 (file)
@@ -724,9 +724,19 @@ void
 notify_motion(struct egl_input_device *device, int x, int y)
 {
        struct egl_surface *es;
+       struct egl_compositor *ec = device->ec;
        const int hotspot_x = 16, hotspot_y = 16;
        int32_t sx, sy;
 
+       if (x < 0)
+               x = 0;
+       if (y < 0)
+               y = 0;
+       if (x >= ec->width)
+               x = ec->width - 1;
+       if (y >= ec->height)
+               y = ec->height - 1;
+
        es = pick_surface(device);
 
        if (es) {