diff options
Diffstat (limited to 'input-keys.c')
-rw-r--r-- | input-keys.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/input-keys.c b/input-keys.c index 5c7e8b1f..d09bf8fb 100644 --- a/input-keys.c +++ b/input-keys.c @@ -254,12 +254,12 @@ static void input_key_mouse(struct window_pane *wp, struct mouse_event *m) { struct screen *s = wp->screen; - int mode = s->mode; char buf[40]; size_t len; u_int x, y; - if ((mode & ALL_MOUSE_MODES) == 0) + /* Ignore events if no mouse mode or the pane is not visible. */ + if (m->ignore || (s->mode & ALL_MOUSE_MODES) == 0) return; if (cmd_mouse_at(wp, m, &x, &y, 0) != 0) return; @@ -267,8 +267,7 @@ input_key_mouse(struct window_pane *wp, struct mouse_event *m) return; /* If this pane is not in button or all mode, discard motion events. */ - if (MOUSE_DRAG(m->b) && - (mode & (MODE_MOUSE_BUTTON|MODE_MOUSE_ALL)) == 0) + if (MOUSE_DRAG(m->b) && (s->mode & MOTION_MOUSE_MODES) == 0) return; /* @@ -280,13 +279,13 @@ input_key_mouse(struct window_pane *wp, struct mouse_event *m) if (m->sgr_type != ' ') { if (MOUSE_DRAG(m->sgr_b) && MOUSE_BUTTONS(m->sgr_b) == 3 && - (~mode & MODE_MOUSE_ALL)) + (~s->mode & MODE_MOUSE_ALL)) return; } else { if (MOUSE_DRAG(m->b) && MOUSE_BUTTONS(m->b) == 3 && MOUSE_BUTTONS(m->lb) == 3 && - (~mode & MODE_MOUSE_ALL)) + (~s->mode & MODE_MOUSE_ALL)) return; } |