diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/menu.c | 7 | ||||
-rw-r--r-- | src/options.c | 9 | ||||
-rw-r--r-- | src/options.h | 5 | ||||
-rw-r--r-- | src/winwidget.c | 2 |
4 files changed, 17 insertions, 6 deletions
@@ -1436,7 +1436,10 @@ void feh_menu_cb(feh_menu * m, feh_menu_item * i, int action, void *data) break; case CB_OPT_AUTO_ZOOM: MENU_ITEM_TOGGLE(i); - opt.auto_zoom = MENU_ITEM_IS_ON(i) ? 1 : 0; + if (MENU_ITEM_IS_ON(i)) + opt.zoom_mode = ZOOM_MODE_FILL; + else + opt.zoom_mode = 0; winwidget_rerender_all(1, 1); break; } @@ -1488,7 +1491,7 @@ static feh_menu *feh_menu_func_gen_options(feh_menu * m) mm = feh_menu_new(); mm->name = estrdup("OPTIONS"); mm->fehwin = m->fehwin; - feh_menu_add_toggle_entry(mm, "Auto-Zoom", NULL, NULL, CB_OPT_AUTO_ZOOM, NULL, NULL, opt.auto_zoom); + feh_menu_add_toggle_entry(mm, "Auto-Zoom", NULL, NULL, CB_OPT_AUTO_ZOOM, NULL, NULL, (opt.zoom_mode == ZOOM_MODE_FILL)); feh_menu_add_toggle_entry(mm, "Freeze Window Size", NULL, NULL, CB_OPT_FREEZE_WINDOW, NULL, NULL, opt.geom_flags); feh_menu_add_toggle_entry(mm, "Fullscreen", NULL, NULL, diff --git a/src/options.c b/src/options.c index bf2f6c0..2ca04b5 100644 --- a/src/options.c +++ b/src/options.c @@ -523,7 +523,7 @@ static void feh_parse_option_array(int argc, char **argv) opt.full_screen = 1; break; case 'Z': - opt.auto_zoom = 1; + opt.zoom_mode = ZOOM_MODE_FILL; break; case 'U': opt.loadables = 1; @@ -693,7 +693,12 @@ static void feh_parse_option_array(int argc, char **argv) opt.menu_style = estrdup(optarg); break; case 205: - opt.default_zoom = atoi(optarg); + if (!strcmp("fill", optarg)) + opt.zoom_mode = ZOOM_MODE_FILL; + else if (!strcmp("max", optarg)) + opt.zoom_mode = ZOOM_MODE_MAX; + else + opt.default_zoom = atoi(optarg); break; case 206: opt.screen_clip = 0; diff --git a/src/options.h b/src/options.h index 966169a..283cf10 100644 --- a/src/options.h +++ b/src/options.h @@ -27,6 +27,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef OPTIONS_H #define OPTIONS_H +#define ZOOM_MODE_FILL 1 +#define ZOOM_MODE_MAX 2 + struct __fehoptions { unsigned char multiwindow; unsigned char montage; @@ -51,7 +54,6 @@ struct __fehoptions { unsigned char randomize; unsigned char jump_on_resort; unsigned char full_screen; - unsigned char auto_zoom; unsigned char draw_filename; unsigned char list; unsigned char quiet; @@ -120,6 +122,7 @@ struct __fehoptions { unsigned int geom_w; unsigned int geom_h; int default_zoom; + int zoom_mode; unsigned char adjust_reload; unsigned char mode; diff --git a/src/winwidget.c b/src/winwidget.c index 81f9ab6..8192700 100644 --- a/src/winwidget.c +++ b/src/winwidget.c @@ -426,7 +426,7 @@ void winwidget_render_image(winwidget winwid, int resize, int alias) smaller = ((winwid->im_w < max_w) && (winwid->im_h < max_h)); - if (!smaller || opt.auto_zoom) { + if (!smaller || (opt.zoom_mode == ZOOM_MODE_FILL)) { double ratio = 0.0; /* Image is larger than the screen (so wants shrinking), or it's |