Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam
2019-03-18 21:24:49 +00:00
15 changed files with 1338 additions and 561 deletions

View File

@ -409,12 +409,13 @@ server_client_check_mouse(struct client *c)
{
struct session *s = c->session;
struct mouse_event *m = &c->tty.mouse;
struct window *w;
struct winlink *wl;
struct window_pane *wp;
u_int x, y, b, sx, sy, px, py;
int flag;
key_code key;
struct timeval tv;
struct style_range *sr;
enum { NOTYPE, MOVE, DOWN, UP, DRAG, WHEEL, DOUBLE, TRIPLE } type;
enum { NOWHERE, PANE, STATUS, STATUS_LEFT, STATUS_RIGHT, BORDER } where;
@ -501,17 +502,29 @@ have_event:
/* Is this on the status line? */
m->statusat = status_at_line(c);
if (m->statusat != -1 && y == (u_int)m->statusat) {
if (x < c->status.left_size)
if (m->statusat != -1 &&
y >= (u_int)m->statusat &&
y < m->statusat + status_line_size(c))
sr = status_get_range(c, x, y - m->statusat);
else
sr = NULL;
if (sr != NULL) {
switch (sr->type) {
case STYLE_RANGE_NONE:
break;
case STYLE_RANGE_LEFT:
where = STATUS_LEFT;
else if (x > c->tty.sx - c->status.right_size)
break;
case STYLE_RANGE_RIGHT:
where = STATUS_RIGHT;
else {
w = status_get_window_at(c, x);
if (w == NULL)
return (KEYC_UNKNOWN);
m->w = w->id;
where = STATUS;
break;
case STYLE_RANGE_WINDOW:
wl = winlink_find_by_index(&s->windows, sr->argument);
if (wl != NULL) {
m->w = wl->window->id;
where = STATUS;
}
break;
}
}