Loading ChangeLog +4 −0 Original line number Diff line number Diff line * git HEAD * Warp the pointer when reaching a window border in pan mode * Various zoom mode improvements, should be more intuitive now + When entering zoom mode, always continue from previous zoom level + The image part you clicked on to start zoom mode will remain where it is. The zoom happen around at that pixel. Fri Apr 2 16:20:55 CEST 2010 Daniel Friesel <derf@chaosdorf.de> Loading TODO +1 −1 Original line number Diff line number Diff line Loading @@ -26,4 +26,4 @@ Maybe I'll someday find out how to fix that :> Make --start-at work with paths as well Fix zooming with middle mouse button Document new zoom behaviour src/events.c +6 −15 Original line number Diff line number Diff line Loading @@ -132,8 +132,10 @@ static void feh_event_handle_ButtonPress(XEvent * ev) winwid->zoom = 1.0; /* required to adjust the image position in zoom mode */ winwid->orig_im_x = winwid->im_x; winwid->orig_im_y = winwid->im_y; winwid->im_click_offset_x = (winwid->click_offset_x - winwid->im_x) / winwid->old_zoom; winwid->im_click_offset_y = (winwid->click_offset_y - winwid->im_y) / winwid->old_zoom; /* center the image */ if (winwid->full_screen) { Loading @@ -152,15 +154,6 @@ static void feh_event_handle_ButtonPress(XEvent * ev) } } if (winwid->click_offset_x < 0) winwid->click_offset_x = 0; if (winwid->click_offset_y < 0) winwid->click_offset_y = 0; if (winwid->click_offset_x > winwid->w) winwid->click_offset_x = winwid->w; if (winwid->click_offset_y > winwid->h) winwid->click_offset_y = winwid->h; winwidget_render_image(winwid, 0, 0); } } else if (ev->xbutton.button == opt.reload_button) { Loading Loading @@ -438,11 +431,9 @@ static void feh_event_handle_MotionNotify(XEvent * ev) /* center around click_offset */ winwid->im_x = winwid->click_offset_x - (winwid->click_offset_x * winwid->zoom); /*+ (winwid->orig_im_x * winwid->zoom);*/ - (winwid->im_click_offset_x * winwid->zoom); winwid->im_y = winwid->click_offset_y - (winwid->click_offset_y * winwid->zoom); /*+ (winwid->orig_im_y * winwid->zoom);*/ - (winwid->im_click_offset_y * winwid->zoom); winwidget_render_image(winwid, 0, 0); } Loading src/winwidget.h +2 −4 Original line number Diff line number Diff line Loading @@ -101,10 +101,6 @@ struct __winwidget { int im_x; int im_y; /* same, as cache for zoom mode */ int orig_im_x; int orig_im_y; /* From 0 (not visible) to 1.00 (actual size) * all the way up to INT_MAX (eww) */ Loading @@ -113,6 +109,8 @@ struct __winwidget { int click_offset_x; int click_offset_y; int im_click_offset_x; int im_click_offset_y; unsigned char has_rotated; }; Loading Loading
ChangeLog +4 −0 Original line number Diff line number Diff line * git HEAD * Warp the pointer when reaching a window border in pan mode * Various zoom mode improvements, should be more intuitive now + When entering zoom mode, always continue from previous zoom level + The image part you clicked on to start zoom mode will remain where it is. The zoom happen around at that pixel. Fri Apr 2 16:20:55 CEST 2010 Daniel Friesel <derf@chaosdorf.de> Loading
TODO +1 −1 Original line number Diff line number Diff line Loading @@ -26,4 +26,4 @@ Maybe I'll someday find out how to fix that :> Make --start-at work with paths as well Fix zooming with middle mouse button Document new zoom behaviour
src/events.c +6 −15 Original line number Diff line number Diff line Loading @@ -132,8 +132,10 @@ static void feh_event_handle_ButtonPress(XEvent * ev) winwid->zoom = 1.0; /* required to adjust the image position in zoom mode */ winwid->orig_im_x = winwid->im_x; winwid->orig_im_y = winwid->im_y; winwid->im_click_offset_x = (winwid->click_offset_x - winwid->im_x) / winwid->old_zoom; winwid->im_click_offset_y = (winwid->click_offset_y - winwid->im_y) / winwid->old_zoom; /* center the image */ if (winwid->full_screen) { Loading @@ -152,15 +154,6 @@ static void feh_event_handle_ButtonPress(XEvent * ev) } } if (winwid->click_offset_x < 0) winwid->click_offset_x = 0; if (winwid->click_offset_y < 0) winwid->click_offset_y = 0; if (winwid->click_offset_x > winwid->w) winwid->click_offset_x = winwid->w; if (winwid->click_offset_y > winwid->h) winwid->click_offset_y = winwid->h; winwidget_render_image(winwid, 0, 0); } } else if (ev->xbutton.button == opt.reload_button) { Loading Loading @@ -438,11 +431,9 @@ static void feh_event_handle_MotionNotify(XEvent * ev) /* center around click_offset */ winwid->im_x = winwid->click_offset_x - (winwid->click_offset_x * winwid->zoom); /*+ (winwid->orig_im_x * winwid->zoom);*/ - (winwid->im_click_offset_x * winwid->zoom); winwid->im_y = winwid->click_offset_y - (winwid->click_offset_y * winwid->zoom); /*+ (winwid->orig_im_y * winwid->zoom);*/ - (winwid->im_click_offset_y * winwid->zoom); winwidget_render_image(winwid, 0, 0); } Loading
src/winwidget.h +2 −4 Original line number Diff line number Diff line Loading @@ -101,10 +101,6 @@ struct __winwidget { int im_x; int im_y; /* same, as cache for zoom mode */ int orig_im_x; int orig_im_y; /* From 0 (not visible) to 1.00 (actual size) * all the way up to INT_MAX (eww) */ Loading @@ -113,6 +109,8 @@ struct __winwidget { int click_offset_x; int click_offset_y; int im_click_offset_x; int im_click_offset_y; unsigned char has_rotated; }; Loading