diff options
author | e5150 <e5150@noreply.codeberg.org> | 2024-04-23 08:47:09 +0200 |
---|---|---|
committer | NRK <nrk@disroot.org> | 2024-04-23 08:47:09 +0200 |
commit | a581cd6344717551c9bacae58809d83ae6979220 (patch) | |
tree | 27b1b76b932dc5e1f105d332aad108f42417bfaf | |
parent | 437e060021ccabf9d5c95068c7c52218b92359e1 (diff) | |
download | nsxiv-master.tar.zst |
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.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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; |