summaryrefslogtreecommitdiff
path: root/src/slideshow.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/slideshow.c')
-rw-r--r--src/slideshow.c50
1 files changed, 47 insertions, 3 deletions
diff --git a/src/slideshow.c b/src/slideshow.c
index d79c859..65aae3d 100644
--- a/src/slideshow.c
+++ b/src/slideshow.c
@@ -149,6 +149,16 @@ void feh_reload_image(winwidget w, int resize, int force_new)
Imlib_Image tmp;
int old_w, old_h;
+ unsigned char tmode =0;
+ int tim_x =0;
+ int tim_y =0;
+ double tzoom =0;
+
+ tmode = w->mode;
+ tim_x = w->im_x;
+ tim_y = w->im_y;
+ tzoom = w->zoom;
+
if (!w->file) {
im_weprintf(w, "couldn't reload, this image has no file associated with it.");
winwidget_render_image(w, 0, 0);
@@ -216,7 +226,16 @@ void feh_reload_image(winwidget w, int resize, int force_new)
w->im_w = gib_imlib_image_get_width(w->im);
w->im_h = gib_imlib_image_get_height(w->im);
}
- winwidget_render_image(w, resize, 0);
+ if (opt.keep_zoom_vp) {
+ /* put back in: */
+ w->mode = tmode;
+ w->im_x = tim_x;
+ w->im_y = tim_y;
+ w->zoom = tzoom;
+ winwidget_render_image(w, 0, 0);
+ } else {
+ winwidget_render_image(w, resize, 0);
+ }
winwidget_rename(w, title);
free(title);
@@ -236,6 +255,11 @@ void slideshow_change_image(winwidget winwid, int change, int render)
int our_filelist_len = filelist_len;
char *s;
+ unsigned char tmode =0;
+ int tim_x =0;
+ int tim_y =0;
+ double tzoom =0;
+
/* Without this, clicking a one-image slideshow reloads it. Not very *
intelligent behaviour :-) */
if (filelist_len < 2 && opt.cycle_once == 0)
@@ -308,6 +332,14 @@ void slideshow_change_image(winwidget winwid, int change, int render)
last = NULL;
}
+ if (opt.keep_zoom_vp) {
+ /* pre loadimage - record settings */
+ tmode = winwid->mode;
+ tim_x = winwid->im_x;
+ tim_y = winwid->im_y;
+ tzoom = winwid->zoom;
+ }
+
if ((winwidget_loadimage(winwid, FEH_FILE(current_file->data)))
!= 0) {
winwid->mode = MODE_NORMAL;
@@ -318,8 +350,20 @@ void slideshow_change_image(winwidget winwid, int change, int render)
winwidget_reset_image(winwid);
winwid->im_w = gib_imlib_image_get_width(winwid->im);
winwid->im_h = gib_imlib_image_get_height(winwid->im);
- if (render)
- winwidget_render_image(winwid, 1, 0);
+ if (opt.keep_zoom_vp) {
+ /* put back in: */
+ winwid->mode = tmode;
+ winwid->im_x = tim_x;
+ winwid->im_y = tim_y;
+ winwid->zoom = tzoom;
+ }
+ if (render) {
+ if (opt.keep_zoom_vp) {
+ winwidget_render_image(winwid, 0, 0);
+ } else {
+ winwidget_render_image(winwid, 1, 0);
+ }
+ }
s = slideshow_create_name(FEH_FILE(current_file->data), winwid);
winwidget_rename(winwid, s);