Fix mouse positioning when the pane is not entirely visible.

This commit is contained in:
nicm 2019-05-03 16:51:29 +00:00
parent cf6075fb29
commit fc3d85e34b
3 changed files with 5 additions and 6 deletions

View File

@ -148,7 +148,7 @@ cmd_resize_pane_mouse_update(struct client *c, struct mouse_event *m)
y--; y--;
else if (m->statusat > 0 && y >= (u_int)m->statusat) else if (m->statusat > 0 && y >= (u_int)m->statusat)
y = m->statusat - 1; y = m->statusat - 1;
ly = m->ly; lx = m->lx; ly = m->ly + m->oy; lx = m->lx + m->ox;
if (m->statusat == 0 && ly > 0) if (m->statusat == 0 && ly > 0)
ly--; ly--;
else if (m->statusat > 0 && ly >= (u_int)m->statusat) else if (m->statusat > 0 && ly >= (u_int)m->statusat)

7
cmd.c
View File

@ -481,17 +481,16 @@ cmd_mouse_at(struct window_pane *wp, struct mouse_event *m, u_int *xp,
u_int x, y; u_int x, y;
if (last) { if (last) {
x = m->lx; x = m->lx + m->ox;
y = m->ly; y = m->ly + m->oy;
} else { } else {
x = m->x; x = m->x;
y = m->y; y = m->y;
} }
log_debug("%s: x=%u, y=%u%s", __func__, x, y, last ? " (last)" : "");
if (m->statusat == 0 && y > 0) if (m->statusat == 0 && y > 0)
y--; y--;
else if (m->statusat > 0 && y >= (u_int)m->statusat)
y = m->statusat - 1;
if (x < wp->xoff || x >= wp->xoff + wp->sx) if (x < wp->xoff || x >= wp->xoff + wp->sx)
return (-1); return (-1);

View File

@ -450,7 +450,7 @@ server_client_check_mouse(struct client *c, struct key_event *event)
x = m->x, y = m->y, b = m->b; x = m->x, y = m->y, b = m->b;
log_debug("drag update at %u,%u", x, y); log_debug("drag update at %u,%u", x, y);
} else { } else {
x = m->lx - m->ox, y = m->ly - m->oy, b = m->lb; x = m->lx, y = m->ly, b = m->lb;
log_debug("drag start at %u,%u", x, y); log_debug("drag start at %u,%u", x, y);
} }
} else if (MOUSE_WHEEL(m->b)) { } else if (MOUSE_WHEEL(m->b)) {