diff options
author | Bert Münnich <ber.t@posteo.de> | 2017-10-16 10:56:53 +0200 |
---|---|---|
committer | Bert Münnich <ber.t@posteo.de> | 2017-10-16 10:56:53 +0200 |
commit | a5403178e337abeed4168be0cb038a42ab31124c (patch) | |
tree | 1f8f157ef44cc58891aecc0fd478ac23468f8baa | |
parent | 5155d52ab18c06925046e2f56a87f2765bb515ba (diff) |
Zoom into mouse cursor position
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | image.c | 11 |
2 files changed, 10 insertions, 3 deletions
@@ -1,6 +1,6 @@ # Works best with GNU make 3.80 or later -VERSION = git-20171012 +VERSION = git-20171016 srcdir = . @@ -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; |