aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authore5150 <e5150@noreply.codeberg.org>2024-04-23 08:47:09 +0200
committerNRK <nrk@disroot.org>2024-04-23 08:47:09 +0200
commita581cd6344717551c9bacae58809d83ae6979220 (patch)
tree27b1b76b932dc5e1f105d332aad108f42417bfaf
parent437e060021ccabf9d5c95068c7c52218b92359e1 (diff)
downloadnsxiv-master.tar.zst
fix: image placement when rotating (#493)HEADmaster
When rotating a partially shown image (i.e. image size * zoom > window size) the image is panned to top or left (if `win->w` or `win->h` is greatest, respectively). Seems to be due to unsignedness of `win->[wh]`, when taking the difference between them in `img_rotate` either `img->[xy]` ends up being close to `UINT_MAX` and the image is panned to top or left edge. Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/493 Reviewed-by: NRK <nrk@disroot.org> Co-authored-by: e5150 <e5150@noreply.codeberg.org> Co-committed-by: e5150 <e5150@noreply.codeberg.org>
-rw-r--r--image.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/image.c b/image.c
index a138f95..dd91994 100644
--- a/image.c
+++ b/image.c
@@ -676,8 +676,8 @@ void img_rotate(img_t *img, degree_t d)
ox = d == DEGREE_90 ? img->x : img->win->w - img->x - img->w * img->zoom;
oy = d == DEGREE_270 ? img->y : img->win->h - img->y - img->h * img->zoom;
- img->x = oy + (img->win->w - img->win->h) / 2;
- img->y = ox + (img->win->h - img->win->w) / 2;
+ img->x = oy + (int)(img->win->w - img->win->h) / 2;
+ img->y = ox + (int)(img->win->h - img->win->w) / 2;
tmp = img->w;
img->w = img->h;