nsxiva540317
Zoom into mouse cursor position
+10 −3
2 files changed
| @@ -1,6 +1,6 @@ | |||
| 1 | 1 | # Works best with GNU make 3.80 or later | |
| 2 | 2 | ||
| 3 | − | VERSION = git-20171012 | |
| 3 | + | VERSION = git-20171016 | |
| 4 | 4 | ||
| 5 | 5 | srcdir = . | |
| 6 | 6 | ||
| @@ -530,8 +530,15 @@ bool img_zoom(img_t *img, float z) | |||
| 530 | 530 | img->scalemode = SCALE_ZOOM; | |
| 531 | 531 | ||
| 532 | 532 | if (zoomdiff(z, img->zoom) != 0) { | |
| 533 | − | img->x = img->win->w / 2 - (img->win->w / 2 - img->x) * z / img->zoom; | |
| 534 | − | img->y = img->win->h / 2 - (img->win->h / 2 - img->y) * z / img->zoom; | |
| 533 | + | int x, y; | |
| 534 | + | ||
| 535 | + | win_cursor_pos(img->win, &x, &y); | |
| 536 | + | if (x < 0 || x >= img->win->w || y < 0 || y >= img->win->h) { | |
| 537 | + | x = img->win->w / 2; | |
| 538 | + | y = img->win->h / 2; | |
| 539 | + | } | |
| 540 | + | img->x = x - (x - img->x) * z / img->zoom; | |
| 541 | + | img->y = y - (y - img->y) * z / img->zoom; | |
| 535 | 542 | img->zoom = z; | |
| 536 | 543 | img->checkpan = true; | |
| 537 | 544 | img->dirty = true; | |