From c274eafe10f07a869bf61661e822696dcd92f5d8 Mon Sep 17 00:00:00 2001
From: Ernie Ewert <ernie@ee5.net>
Date: Sat, 15 Oct 2016 11:44:09 -0700
Subject: Added a "zoom fit" key binding for the current image. Fixed(?)
 Makefile document build issue for README.md

---
 src/keyevents.c | 16 +++++++++++++---
 src/options.h   |  1 +
 2 files changed, 14 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/keyevents.c b/src/keyevents.c
index e691eaa..4385fc6 100644
--- a/src/keyevents.c
+++ b/src/keyevents.c
@@ -140,7 +140,7 @@ void init_keyevents(void) {
 	feh_set_kb(&keys.toggle_aliasing, 0, XK_A, 0, 0, 0, 0);
 	feh_set_kb(&keys.toggle_filenames, 0, XK_d, 0, 0, 0, 0);
 #ifdef HAVE_LIBEXIF
-	feh_set_kb(&keys.toggle_exif, 0, XK_e, 0, 0, 0, 0);	
+	feh_set_kb(&keys.toggle_exif, 0, XK_e, 0, 0, 0, 0);
 #endif
 	feh_set_kb(&keys.toggle_info, 0, XK_i, 0, 0, 0, 0);
 	feh_set_kb(&keys.toggle_pointer, 0, XK_o, 0, 0, 0, 0);
@@ -439,6 +439,8 @@ fehkey *feh_str_to_kb(char *action)
 		return &keys.zoom_default;
 	else if (!strcmp(action, "zoom_fit"))
 		return &keys.zoom_fit;
+	else if (!strcmp(action, "zoom_fill"))
+		return &keys.zoom_fill;
 	else if (!strcmp(action, "size_to_image"))
 		return &keys.size_to_image;
 	else if (!strcmp(action, "render"))
@@ -653,6 +655,14 @@ void feh_event_handle_generic(winwidget winwid, unsigned int state, KeySym keysy
 		winwidget_center_image(winwid);
 		winwidget_render_image(winwid, 0, 0);
 	}
+	else if (feh_is_kp(&keys.zoom_fill, state, keysym, button)) {
+		int save_zoom = opt.zoom_mode;
+		opt.zoom_mode = ZOOM_MODE_FILL;
+		feh_calc_needed_zoom(&winwid->zoom, winwid->im_w, winwid->im_h, winwid->w, winwid->h);
+		winwidget_center_image(winwid);
+		winwidget_render_image(winwid, 0, 0);
+		opt.zoom_mode = save_zoom;
+	}
 	else if (feh_is_kp(&keys.render, state, keysym, button)) {
 		if (winwid->type == WIN_TYPE_THUMBNAIL)
 			feh_thumbnail_show_selected();
@@ -677,7 +687,7 @@ void feh_event_handle_generic(winwidget winwid, unsigned int state, KeySym keysy
 		opt.draw_exif = !opt.draw_exif;
 		winwidget_rerender_all(0);
 	}
-#endif		
+#endif
 	else if (feh_is_kp(&keys.toggle_info, state, keysym, button)) {
 		opt.draw_info = !opt.draw_info;
 		winwidget_rerender_all(0);
@@ -777,7 +787,7 @@ void feh_event_handle_generic(winwidget winwid, unsigned int state, KeySym keysy
 		}
 #endif				/* HAVE_LIBXINERAMA */
 	}
-	else if (feh_is_kp(&keys.reload_plus, state, keysym, button)){ 
+	else if (feh_is_kp(&keys.reload_plus, state, keysym, button)){
 		if (opt.reload < SLIDESHOW_RELOAD_MAX)
 			opt.reload++;
 		else if (opt.verbose)
diff --git a/src/options.h b/src/options.h
index 0dee617..c7ce689 100644
--- a/src/options.h
+++ b/src/options.h
@@ -175,6 +175,7 @@ struct __fehkb {
 	struct __fehkey zoom_out;
 	struct __fehkey zoom_default;
 	struct __fehkey zoom_fit;
+	struct __fehkey zoom_fill;
 	struct __fehkey render;
 	struct __fehkey toggle_actions;
 	struct __fehkey toggle_filenames;
-- 
cgit v1.2.3


From 4b2cd1835a18dc0445c5ab4c14f80d1b664e626d Mon Sep 17 00:00:00 2001
From: Daniel Friesel <derf@finalrewind.org>
Date: Mon, 17 Oct 2016 21:05:57 +0200
Subject: Properly initialize zoom_fill key binding, set it to ! (exclamation
 mark)

---
 man/feh.pre     | 2 +-
 src/keyevents.c | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/man/feh.pre b/man/feh.pre
index 2907bb2..407d96f 100644
--- a/man/feh.pre
+++ b/man/feh.pre
@@ -1414,7 +1414,7 @@ Zoom to 100%
 .
 Zoom to fit the window size
 .
-.It Ao keypad 5 Ac Bq zoom_fill
+.It ! Bq zoom_fill
 .
 Zoom to fill the window size like
 .Cm --bg-fill
diff --git a/src/keyevents.c b/src/keyevents.c
index 4385fc6..7bfacc8 100644
--- a/src/keyevents.c
+++ b/src/keyevents.c
@@ -134,6 +134,7 @@ void init_keyevents(void) {
 	feh_set_kb(&keys.zoom_out  , 0, XK_Down      , 0, XK_KP_Subtract,0, 0);
 	feh_set_kb(&keys.zoom_default, 0, XK_KP_Multiply, 0, XK_asterisk,0, 0);
 	feh_set_kb(&keys.zoom_fit  , 0, XK_KP_Divide , 0, XK_slash     , 0, 0);
+	feh_set_kb(&keys.zoom_fill , 0, XK_exclam    , 0, 0            , 0, 0);
 	feh_set_kb(&keys.size_to_image, 0, XK_w      , 0, 0            , 0, 0);
 	feh_set_kb(&keys.render    , 0, XK_KP_Begin  , 0, XK_R         , 0, 0);
 	feh_set_kb(&keys.toggle_actions, 0, XK_a, 0, 0, 0, 0);
-- 
cgit v1.2.3