From a5403178e337abeed4168be0cb038a42ab31124c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20M=C3=BCnnich?= Date: Mon, 16 Oct 2017 10:56:53 +0200 Subject: Zoom into mouse cursor position --- image.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'image.c') diff --git a/image.c b/image.c index 6ace9bd..5d7f5cf 100644 --- a/image.c +++ b/image.c @@ -530,8 +530,15 @@ bool img_zoom(img_t *img, float z) img->scalemode = SCALE_ZOOM; if (zoomdiff(z, img->zoom) != 0) { - img->x = img->win->w / 2 - (img->win->w / 2 - img->x) * z / img->zoom; - img->y = img->win->h / 2 - (img->win->h / 2 - img->y) * z / img->zoom; + int x, y; + + win_cursor_pos(img->win, &x, &y); + if (x < 0 || x >= img->win->w || y < 0 || y >= img->win->h) { + x = img->win->w / 2; + y = img->win->h / 2; + } + img->x = x - (x - img->x) * z / img->zoom; + img->y = y - (y - img->y) * z / img->zoom; img->zoom = z; img->checkpan = true; img->dirty = true; -- cgit v1.2.3