Latest round of fixes from upstream:

* fix --draw-filename "x of y" being cut off by short filenames
* respect --zoom 100 in --fullscreen mode
This commit is contained in:
dcoppa 2011-06-28 07:40:08 +00:00
parent 0b66f8d674
commit d2fc0960bd
4 changed files with 104 additions and 6 deletions

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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;