From e35b7ca36f6764206a6676ef4a9e4c197475e023 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 9 Apr 2010 23:34:24 +0200 Subject: events.c: Fix pointer warping a bit. Still has bugs, though. --- src/events.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/events.c b/src/events.c index a9e7ea2..742f65a 100644 --- a/src/events.c +++ b/src/events.c @@ -465,28 +465,35 @@ static void feh_event_handle_MotionNotify(XEvent * ev) D(4, ("im_x %d, im_w %d, off %d, mx %d\n", winwid->im_x, winwid->im_w, winwid->click_offset_x, ev->xmotion.x)); - if (winwid->w - ev->xmotion.x <= 1) { + if ((winwid->w - ev->xmotion.x <= 1) + && (winwid->click_offset_x >= winwid->w - 4)) + { XWarpPointer(disp, None, winwid->win, 0, 0, 0, 0, 3, ev->xmotion.y); winwid->click_offset_x -= winwid->w - 4; } - else if (ev->xmotion.x <= 0) { + else if ((ev->xmotion.x <= 0) && (winwid->click_offset_x + <= winwid->im_w - winwid->w - 3)) + { XWarpPointer(disp, None, winwid->win, 0, 0, 0, 0, winwid->im_w - 4, ev->xmotion.y); winwid->click_offset_x += winwid->w - 3; } - else if (winwid->h - ev->xmotion.y <= 1) { + else if ((winwid->h - ev->xmotion.y <= 1) + && (winwid->click_offset_y >= winwid->h - 4)) + { XWarpPointer(disp, None, winwid->win, 0, 0, 0, 0, ev->xmotion.x, 3); winwid->click_offset_y -= winwid->h - 4; } - else if (ev->xmotion.y <= 0) { + else if ((ev->xmotion.y <= 0) && (winwid->click_offset_y + <= winwid->im_h - winwid->h - 3)) + { XWarpPointer(disp, None, winwid->win, 0, 0, 0, 0, ev->xmotion.x, winwid->im_h - 4); winwid->click_offset_y += winwid->h - 3; } - if ((winwid->im_x != orig_x) || (winwid->im_y != orig_y)) winwidget_render_image(winwid, 0, 0); -- cgit v1.2.3