From 4cf27ef3387e52676483b4272072acf4d5ebcf29 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sat, 4 Dec 2010 14:24:53 +0000 Subject: Stop cursor leaving the root widget and causing a segfault (Found by tlsa) svn path=/trunk/netsurf/; revision=10957 --- framebuffer/fbtk/event.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'framebuffer') diff --git a/framebuffer/fbtk/event.c b/framebuffer/fbtk/event.c index c1c4bc1ee..8dc1b02b3 100644 --- a/framebuffer/fbtk/event.c +++ b/framebuffer/fbtk/event.c @@ -134,6 +134,16 @@ fbtk_warp_pointer(fbtk_widget_t *widget, int x, int y, bool relative) cloc.y0 = y; } + /* ensure cursor location lies within the root widget */ + if (cloc.x0 < root->x) + cloc.x0 = root->x; + if (cloc.x0 > (root->x + root->width)) + cloc.x0 = (root->x + root->width); + if (cloc.y0 < root->y) + cloc.y0 = root->y; + if (cloc.y0 > (root->y + root->height)) + cloc.y0 = (root->y + root->height); + if (root->u.root.grabbed == NULL) { /* update the pointer cursor */ nsfb_cursor_loc_set(root->u.root.fb, &cloc); -- cgit v1.2.3