Skip to content
Snippets Groups Projects
Commit f7168c86 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

events.c: Make pointer warping work for zoomed images

parent 1657b7ce
No related branches found
No related tags found
No related merge requests found
* git HEAD
* Warp the pointer when reaching a window border in pan mode
Fri Apr 2 16:20:55 CEST 2010 Daniel Friesel <derf@chaosdorf.de> Fri Apr 2 16:20:55 CEST 2010 Daniel Friesel <derf@chaosdorf.de>
* Release v1.4.2 * Release v1.4.2
......
...@@ -23,5 +23,3 @@ On screen 1, it will work if fullscreen is turned off, the window is rendered ...@@ -23,5 +23,3 @@ On screen 1, it will work if fullscreen is turned off, the window is rendered
and moved so that its top corner is only on screen 1, and then fullscreen is and moved so that its top corner is only on screen 1, and then fullscreen is
turned on (after that, it'll work for all images in the slideshow). turned on (after that, it'll work for all images in the slideshow).
Maybe I'll someday find out how to fix that :> Maybe I'll someday find out how to fix that :>
In zoom / pan mode: Warp the mouse when reaching a screen corner.
...@@ -473,7 +473,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev) ...@@ -473,7 +473,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
winwid->click_offset_x -= winwid->w - 4; winwid->click_offset_x -= winwid->w - 4;
} }
else if ((ev->xmotion.x <= 1) && (winwid->click_offset_x else if ((ev->xmotion.x <= 1) && (winwid->click_offset_x
<= winwid->im_w - winwid->w - 3)) <= (winwid->im_w * winwid->zoom) - winwid->w - 3))
{ {
XWarpPointer(disp, None, winwid->win, 0, 0, 0, 0, XWarpPointer(disp, None, winwid->win, 0, 0, 0, 0,
winwid->w - 4, ev->xmotion.y); winwid->w - 4, ev->xmotion.y);
...@@ -487,7 +487,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev) ...@@ -487,7 +487,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
winwid->click_offset_y -= winwid->h - 4; winwid->click_offset_y -= winwid->h - 4;
} }
else if ((ev->xmotion.y <= 1) && (winwid->click_offset_y else if ((ev->xmotion.y <= 1) && (winwid->click_offset_y
<= winwid->im_h - winwid->h - 3)) <= (winwid->im_h * winwid->zoom) - winwid->h - 3))
{ {
XWarpPointer(disp, None, winwid->win, 0, 0, 0, 0, XWarpPointer(disp, None, winwid->win, 0, 0, 0, 0,
ev->xmotion.x, winwid->h - 4); ev->xmotion.x, winwid->h - 4);
......
...@@ -100,7 +100,7 @@ struct __winwidget { ...@@ -100,7 +100,7 @@ struct __winwidget {
/* New stuff */ /* New stuff */
int im_x; /* image offset from window top left */ int im_x; /* image offset from window top left */
int im_y; /* image offset from window top left */ int im_y; /* image offset from window top left */
double zoom; /* From 0 (not visible) to 100 (actual size) double zoom; /* From 0 (not visible) to 1.00 (actual size)
all the way up to INT_MAX (ouch) */ all the way up to INT_MAX (ouch) */
int click_offset_x; int click_offset_x;
int click_offset_y; int click_offset_y;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment