summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2025-09-08 20:03:57 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2025-09-08 20:03:57 +0200
commit856cb97e527c2cde795f42960fab3a22612471cb (patch)
tree914e0fee509a433becbcffdd25a076b3d7b253d9 /src
parent47e7e1de3c94212847da42b23c2b9eabd99d5a21 (diff)
winwidget_render_image: only set x/y :=0 if !scale_down or w/h != im_w/im_h
This is another fix for 2a90af6d3709dd01c447f18db5109cab86eb4735 that should not have any adverse effects, as it specifically catches the case where --scale-down has caused a window dimension to be equal to an image dimension. Fixes #795 Fixes #796
Diffstat (limited to 'src')
-rw-r--r--src/winwidget.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/winwidget.c b/src/winwidget.c
index 3b90158..cd117ac 100644
--- a/src/winwidget.c
+++ b/src/winwidget.c
@@ -500,8 +500,10 @@ void winwidget_render_image(winwidget winwid, int resize, int force_alias)
} else {
winwid->im_x = - opt.offset_x * winwid->zoom;
}
- } else {
+ } else if (!opt.scale_down || (winwid->w != winwid->im_w)) {
winwid->im_x = (int) (winwid->w - (winwid->im_w * winwid->zoom)) >> 1;
+ } else {
+ winwid->im_x = 0;
}
if (opt.offset_flags & YValue) {
if (opt.offset_flags & YNegative) {
@@ -509,8 +511,10 @@ void winwidget_render_image(winwidget winwid, int resize, int force_alias)
} else {
winwid->im_y = - opt.offset_y * winwid->zoom;
}
- } else {
+ } else if (!opt.scale_down || (winwid->h != winwid->im_h)) {
winwid->im_y = (int) (winwid->h - (winwid->im_h * winwid->zoom)) >> 1;
+ } else {
+ winwid->im_y = 0;
}
}
@@ -549,17 +553,15 @@ void winwidget_render_image(winwidget winwid, int resize, int force_alias)
calc_h = lround(winwid->im_h * winwid->zoom);
dw = (winwid->w - winwid->im_x);
dh = (winwid->h - winwid->im_y);
+
+ D(("sx: %4d sy: %4d sw: sh: dx: %4d dy: %4d dw: %4d dh: %4d zoom: %f\n",
+ sx, sy, sw, sh, dx, dy, dw, dh, winwid->zoom));
+
if (calc_w < dw) {
dw = calc_w;
- if (!winwid->full_screen) {
- dx = 0;
- }
}
if (calc_h < dh) {
dh = calc_h;
- if (!winwid->full_screen) {
- dy = 0;
- }
}
if (dw > winwid->w)
dw = winwid->w;
@@ -569,7 +571,7 @@ void winwidget_render_image(winwidget winwid, int resize, int force_alias)
sw = lround(dw / winwid->zoom);
sh = lround(dh / winwid->zoom);
- D(("sx: %d sy: %d sw: %d sh: %d dx: %d dy: %d dw: %d dh: %d zoom: %f\n",
+ D(("sx: %4d sy: %4d sw: %4d sh: %4d dx: %4d dy: %4d dw: %4d dh: %4d zoom: %f\n",
sx, sy, sw, sh, dx, dy, dw, dh, winwid->zoom));
if ((winwid->zoom != 1.0 || winwid->has_rotated) && !force_alias && !winwid->force_aliasing)