From d2fc0960bd9882a59de4f5bed327b7ffde866b0c Mon Sep 17 00:00:00 2001 From: dcoppa Date: Tue, 28 Jun 2011 07:40:08 +0000 Subject: [PATCH] Latest round of fixes from upstream: * fix --draw-filename "x of y" being cut off by short filenames * respect --zoom 100 in --fullscreen mode --- graphics/feh/Makefile | 4 +- graphics/feh/patches/patch-man_feh_pre | 23 ++++++-- graphics/feh/patches/patch-src_imlib_c | 63 ++++++++++++++++++++++ graphics/feh/patches/patch-src_winwidget_c | 20 +++++++ 4 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 graphics/feh/patches/patch-src_imlib_c create mode 100644 graphics/feh/patches/patch-src_winwidget_c diff --git a/graphics/feh/Makefile b/graphics/feh/Makefile index 54042efe151..0cd3663cd37 100644 --- a/graphics/feh/Makefile +++ b/graphics/feh/Makefile @@ -1,9 +1,9 @@ -# $OpenBSD: Makefile,v 1.24 2011/06/01 11:55:22 dcoppa Exp $ +# $OpenBSD: Makefile,v 1.25 2011/06/28 07:40:08 dcoppa Exp $ COMMENT= lightweight image viewer DISTNAME= feh-1.14.1 -REVISION= 1 +REVISION= 2 EXTRACT_SUFX= .tar.bz2 CATEGORIES= graphics diff --git a/graphics/feh/patches/patch-man_feh_pre b/graphics/feh/patches/patch-man_feh_pre index 95e1536c209..48150dced4b 100644 --- a/graphics/feh/patches/patch-man_feh_pre +++ b/graphics/feh/patches/patch-man_feh_pre @@ -1,7 +1,22 @@ -$OpenBSD: patch-man_feh_pre,v 1.3 2011/06/01 11:55:22 dcoppa Exp $ ---- man/feh.pre.orig Wed Jun 1 13:45:59 2011 -+++ man/feh.pre Wed Jun 1 13:46:43 2011 -@@ -670,7 +670,7 @@ can also be used as a background setter. It will stor +$OpenBSD: patch-man_feh_pre,v 1.4 2011/06/28 07:40:08 dcoppa Exp $ +--- man/feh.pre.orig Thu May 19 22:36:13 2011 ++++ man/feh.pre Tue Jun 28 09:33:26 2011 +@@ -239,6 +239,14 @@ below each thumbnail. Enables + .It Cm -F , --fullscreen + . + Make the window fullscreen. ++Note that in this mode, large images will always be scaled down to fit the ++screen, ++.Cm --zoom Ar zoom ++only affects smaller images and never scales larger than necessary to fit the ++screen size. The only exception is a ++.Ar zoom ++of 100, in which case images will always be shown at 100% zoom, no matter ++their dimensions. + . + .It Cm -g , --geometry Ar width No x Ar height + . +@@ -670,7 +678,7 @@ can also be used as a background setter. It will stor necessary to set the background in .Pa ~/.fehbg , so to have your background restored everytime you start X, you can add diff --git a/graphics/feh/patches/patch-src_imlib_c b/graphics/feh/patches/patch-src_imlib_c new file mode 100644 index 00000000000..c04a3760a43 --- /dev/null +++ b/graphics/feh/patches/patch-src_imlib_c @@ -0,0 +1,63 @@ +$OpenBSD: patch-src_imlib_c,v 1.7 2011/06/28 07:40:08 dcoppa Exp $ +--- src/imlib.c.orig Thu May 19 22:36:13 2011 ++++ src/imlib.c Tue Jun 28 09:30:29 2011 +@@ -434,7 +434,7 @@ void feh_draw_errstr(winwidget w) + void feh_draw_filename(winwidget w) + { + static Imlib_Font fn = NULL; +- int tw = 0, th = 0; ++ int tw = 0, th = 0, nw = 0; + Imlib_Image im = NULL; + static DATA8 atab[256]; + char *s = NULL; +@@ -462,10 +462,22 @@ void feh_draw_filename(winwidget w) + memset(atab, 0, sizeof(atab)); + + /* Work out how high the font is */ +- gib_imlib_get_text_size(fn, FEH_FILE(w->file->data)->filename, NULL, &tw, &th, IMLIB_TEXT_TO_RIGHT); ++ gib_imlib_get_text_size(fn, FEH_FILE(w->file->data)->filename, NULL, &tw, ++ &th, IMLIB_TEXT_TO_RIGHT); + +- /* tw is no longer correct, if the filename is shorter than +- * the string "%d of %d" used below in fullscreen mode */ ++ if (gib_list_length(filelist) > 1) { ++ len = snprintf(NULL, 0, "%d of %d", gib_list_length(filelist), ++ gib_list_length(filelist)) + 1; ++ s = emalloc(len); ++ snprintf(s, len, "%d of %d", gib_list_num(filelist, current_file) + ++ 1, gib_list_length(filelist)); ++ ++ gib_imlib_get_text_size(fn, s, NULL, &nw, NULL, IMLIB_TEXT_TO_RIGHT); ++ ++ if (nw > tw) ++ tw = nw; ++ } ++ + tw += 3; + th += 3; + im = imlib_create_image(tw, 2 * th); +@@ -473,20 +485,16 @@ void feh_draw_filename(winwidget w) + eprintf("Couldn't create image. Out of memory?"); + + gib_imlib_image_set_has_alpha(im, 1); +- gib_imlib_apply_color_modifier_to_rectangle(im, 0, 0, tw, 2 * th, NULL, NULL, NULL, atab); ++ gib_imlib_apply_color_modifier_to_rectangle(im, 0, 0, tw, 2 * th, NULL, ++ NULL, NULL, atab); + gib_imlib_image_fill_rectangle(im, 0, 0, tw, 2 * th, 0, 0, 0, 0); + + gib_imlib_text_draw(im, fn, NULL, 2, 2, FEH_FILE(w->file->data)->filename, + IMLIB_TEXT_TO_RIGHT, 0, 0, 0, 255); + gib_imlib_text_draw(im, fn, NULL, 1, 1, FEH_FILE(w->file->data)->filename, + IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255); +- /* Print the position in the filelist, if we have >=2 files */ +- if (gib_list_length(filelist) > 1) { +- /* sic! */ +- len = snprintf(NULL, 0, "%d of %d", gib_list_length(filelist), gib_list_length(filelist)) + 1; +- s = emalloc(len); +- snprintf(s, len, "%d of %d", gib_list_num(filelist, current_file) + 1, gib_list_length(filelist)); +- /* This should somehow be right-aligned */ ++ ++ if (s) { + gib_imlib_text_draw(im, fn, NULL, 2, th + 1, s, IMLIB_TEXT_TO_RIGHT, 0, 0, 0, 255); + gib_imlib_text_draw(im, fn, NULL, 1, th, s, IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255); + free(s); diff --git a/graphics/feh/patches/patch-src_winwidget_c b/graphics/feh/patches/patch-src_winwidget_c new file mode 100644 index 00000000000..3a3a59d0689 --- /dev/null +++ b/graphics/feh/patches/patch-src_winwidget_c @@ -0,0 +1,20 @@ +$OpenBSD: patch-src_winwidget_c,v 1.5 2011/06/28 07:40:08 dcoppa Exp $ +--- src/winwidget.c.orig Thu May 19 22:36:13 2011 ++++ src/winwidget.c Tue Jun 28 09:33:26 2011 +@@ -464,10 +464,12 @@ void winwidget_render_image(winwidget winwid, int resi + double old_zoom = winwid->zoom; + + winwid->zoom = 0.01 * opt.default_zoom; +- if ((winwid->im_h * winwid->zoom) > max_h) +- winwid->zoom = old_zoom; +- if ((winwid->im_w * winwid->zoom) > max_w) +- winwid->zoom = old_zoom; ++ if (winwid->zoom != 1.0) { ++ if ((winwid->im_h * winwid->zoom) > max_h) ++ winwid->zoom = old_zoom; ++ else if ((winwid->im_w * winwid->zoom) > max_w) ++ winwid->zoom = old_zoom; ++ } + + winwid->im_x = ((int) + (max_w - (winwid->im_w * winwid->zoom))) >> 1;