diff --git a/server-client.c b/server-client.c index 055f192c..9b83fe13 100644 --- a/server-client.c +++ b/server-client.c @@ -449,9 +449,14 @@ server_client_reset_state(struct client *c) else tty_cursor(&c->tty, wp->xoff + s->cx, wp->yoff + s->cy); + /* + * Any mode will do for mouse-select-pane, but set standard mode if + * none. + */ mode = s->mode; if (TAILQ_NEXT(TAILQ_FIRST(&w->panes), entry) != NULL && - options_get_number(oo, "mouse-select-pane")) + options_get_number(oo, "mouse-select-pane") && + (mode & ALL_MOUSE_MODES) == 0) mode |= MODE_MOUSE_STANDARD; /* diff --git a/tty.c b/tty.c index aff0d08a..497dacc6 100644 --- a/tty.c +++ b/tty.c @@ -401,19 +401,19 @@ tty_update_mode(struct tty *tty, int mode) if (mode & ALL_MOUSE_MODES) { if (mode & MODE_MOUSE_UTF8) tty_puts(tty, "\033[?1005h"); - if (mode & MODE_MOUSE_STANDARD) - tty_puts(tty, "\033[?1000h"); + if (mode & MODE_MOUSE_ANY) + tty_puts(tty, "\033[?1003h"); else if (mode & MODE_MOUSE_BUTTON) tty_puts(tty, "\033[?1002h"); - else if (mode & MODE_MOUSE_ANY) - tty_puts(tty, "\033[?1003h"); + else if (mode & MODE_MOUSE_STANDARD) + tty_puts(tty, "\033[?1000h"); } else { - if (tty->mode & MODE_MOUSE_STANDARD) - tty_puts(tty, "\033[?1000l"); + if (tty->mode & MODE_MOUSE_ANY) + tty_puts(tty, "\033[?1003l"); else if (tty->mode & MODE_MOUSE_BUTTON) tty_puts(tty, "\033[?1002l"); - else if (tty->mode & MODE_MOUSE_ANY) - tty_puts(tty, "\033[?1003l"); + else if (tty->mode & MODE_MOUSE_STANDARD) + tty_puts(tty, "\033[?1000l"); if (tty->mode & MODE_MOUSE_UTF8) tty_puts(tty, "\033[?1005l"); }