mirror of
https://github.com/tmux/tmux.git
synced 2025-01-12 03:08:46 +00:00
Correctly adjust mouse position if the status line is at the top and
more than one line. GitHub issue 1822.
This commit is contained in:
parent
3635b3cd6c
commit
ddf53d6e4e
@ -144,13 +144,13 @@ cmd_resize_pane_mouse_update(struct client *c, struct mouse_event *m)
|
||||
w = wl->window;
|
||||
|
||||
y = m->y + m->oy; x = m->x + m->ox;
|
||||
if (m->statusat == 0 && y > 0)
|
||||
y--;
|
||||
if (m->statusat == 0 && y >= m->statuslines)
|
||||
y -= m->statuslines;
|
||||
else if (m->statusat > 0 && y >= (u_int)m->statusat)
|
||||
y = m->statusat - 1;
|
||||
ly = m->ly + m->oy; lx = m->lx + m->ox;
|
||||
if (m->statusat == 0 && ly > 0)
|
||||
ly--;
|
||||
if (m->statusat == 0 && ly >= m->statuslines)
|
||||
ly -= m->statuslines;
|
||||
else if (m->statusat > 0 && ly >= (u_int)m->statusat)
|
||||
ly = m->statusat - 1;
|
||||
|
||||
|
4
cmd.c
4
cmd.c
@ -597,8 +597,8 @@ cmd_mouse_at(struct window_pane *wp, struct mouse_event *m, u_int *xp,
|
||||
}
|
||||
log_debug("%s: x=%u, y=%u%s", __func__, x, y, last ? " (last)" : "");
|
||||
|
||||
if (m->statusat == 0 && y > 0)
|
||||
y--;
|
||||
if (m->statusat == 0 && y >= m->statuslines)
|
||||
y -= m->statuslines;
|
||||
|
||||
if (x < wp->xoff || x >= wp->xoff + wp->sx)
|
||||
return (-1);
|
||||
|
@ -524,9 +524,10 @@ have_event:
|
||||
|
||||
/* Is this on the status line? */
|
||||
m->statusat = status_at_line(c);
|
||||
m->statuslines = status_line_size(c);
|
||||
if (m->statusat != -1 &&
|
||||
y >= (u_int)m->statusat &&
|
||||
y < m->statusat + status_line_size(c)) {
|
||||
y < m->statusat + m->statuslines) {
|
||||
sr = status_get_range(c, x, y - m->statusat);
|
||||
if (sr == NULL) {
|
||||
where = STATUS_DEFAULT;
|
||||
@ -555,8 +556,8 @@ have_event:
|
||||
/* Not on status line. Adjust position and check for border or pane. */
|
||||
if (where == NOWHERE) {
|
||||
px = x;
|
||||
if (m->statusat == 0 && y > 0)
|
||||
py = y - 1;
|
||||
if (m->statusat == 0 && y >= m->statuslines)
|
||||
py = y - m->statuslines;
|
||||
else if (m->statusat > 0 && y >= (u_int)m->statusat)
|
||||
py = m->statusat - 1;
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user