From c2ad802b1f647740fbf3b597de73d071404a5432 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Mon, 27 Sep 2010 18:33:47 +0200 Subject: Zoom button: Do 100% zoom upon release, not click. Fixes the annoying 100% zoom and then continuing where it was. --- ChangeLog | 1 + man/feh.pre | 9 ++++----- src/events.c | 14 +++++++++----- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index cca9f5a..e8bc369 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,7 @@ git HEAD * Do not change to the next slide when executing an action with ; as first character (this character is stripped when executing the action) * Speed up panning, zooming etc. by hiding image overlay text + * Zoom button: Zoom to 100% on button release, not button click Tue, 24 Aug 2010 19:23:36 +0200 Daniel Friesel diff --git a/man/feh.pre b/man/feh.pre index 7c6f064..7605bb2 100644 --- a/man/feh.pre +++ b/man/feh.pre @@ -779,11 +779,10 @@ will warp your cursor to the opposite border so you can continue panning. .Pp When clicking the zoom button and immediately releasing it, the image will be back at 100% zoom. When clicking it and moving the mouse while holding the -button down, the zoom will be continued at the previous zoom level. Do not let -the short snapback to 100% confuse you, it'll be removed as soon as you move -the mouse. The zoom will always happen so that the pixel on which you entered -the zoom mode remains stationary. So, to enlarge a specific part of an image, -click the zoom button on that part. +button down, the zoom will be continued at the previous zoom level. The zoom +will always happen so that the pixel on which you entered the zoom mode +remains stationary. So, to enlarge a specific part of an image, click the +zoom button on that part. . .Sh SIGNALS In slideshow mode, diff --git a/src/events.c b/src/events.c index 5a4a059..36379b1 100644 --- a/src/events.c +++ b/src/events.c @@ -114,16 +114,12 @@ static void feh_event_handle_ButtonPress(XEvent * ev) winwid->click_offset_x = ev->xbutton.x; winwid->click_offset_y = ev->xbutton.y; winwid->old_zoom = winwid->zoom; - winwid->zoom = 1.0; /* required to adjust the image position in zoom mode */ 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; - - winwidget_center_image(winwid); - winwidget_render_image(winwid, 0, 0); } } else if (ev->xbutton.button == opt.reload_button) { D(("Reload Button Press event\n")); @@ -242,7 +238,15 @@ static void feh_event_handle_ButtonRelease(XEvent * ev) D(("Disabling mode\n")); opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; - winwidget_sanitise_offsets(winwid); + + if ((ev->xbutton.button == opt.zoom_button) + && (ev->xbutton.x == winwid->click_offset_x) + && (ev->xbutton.y == winwid->click_offset_y)) { + winwid->zoom = 1.0; + winwidget_center_image(winwid); + } else + winwidget_sanitise_offsets(winwid); + winwidget_render_image(winwid, 0, 1); } } else if ((ev->xbutton.button == opt.blur_button) -- cgit v1.2.3