diff options
author | Thomas Adam <thomas@xteddy.org> | 2020-11-09 12:01:21 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2020-11-09 12:01:21 +0000 |
commit | 0dcb6e5eb4bad32ef5676c533ece81e988a1c03b (patch) | |
tree | 783167632738ef9b6260549861f1f4c6567f5de9 /tty.c | |
parent | 5ddbf0c91839e76a3db72f184950928818c4b02d (diff) | |
parent | f1193b48910aed15a2c73cdb5784a26f2ea0f64c (diff) | |
download | rtmux-0dcb6e5eb4bad32ef5676c533ece81e988a1c03b.tar.gz rtmux-0dcb6e5eb4bad32ef5676c533ece81e988a1c03b.tar.bz2 rtmux-0dcb6e5eb4bad32ef5676c533ece81e988a1c03b.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'tty.c')
-rw-r--r-- | tty.c | 26 |
1 files changed, 12 insertions, 14 deletions
@@ -694,28 +694,26 @@ tty_update_mode(struct tty *tty, int mode, struct screen *s) } if ((changed & ALL_MOUSE_MODES) && tty_term_has(tty->term, TTYC_KMOUS)) { - if ((mode & ALL_MOUSE_MODES) == 0) + /* + * If the mouse modes have changed, clear any that are set and + * apply again. There are differences in how terminals track + * the various bits. + */ + if (tty->mode & MODE_MOUSE_SGR) tty_puts(tty, "\033[?1006l"); - if ((changed & MODE_MOUSE_STANDARD) && - (~mode & MODE_MOUSE_STANDARD)) + if (tty->mode & MODE_MOUSE_STANDARD) tty_puts(tty, "\033[?1000l"); - if ((changed & MODE_MOUSE_BUTTON) && - (~mode & MODE_MOUSE_BUTTON)) + if (tty->mode & MODE_MOUSE_BUTTON) tty_puts(tty, "\033[?1002l"); - if ((changed & MODE_MOUSE_ALL) && - (~mode & MODE_MOUSE_ALL)) + if (tty->mode & MODE_MOUSE_ALL) tty_puts(tty, "\033[?1003l"); - if (mode & ALL_MOUSE_MODES) tty_puts(tty, "\033[?1006h"); - if ((changed & MODE_MOUSE_STANDARD) && - (mode & MODE_MOUSE_STANDARD)) + if (mode & MODE_MOUSE_STANDARD) tty_puts(tty, "\033[?1000h"); - if ((changed & MODE_MOUSE_BUTTON) && - (mode & MODE_MOUSE_BUTTON)) + if (mode & MODE_MOUSE_BUTTON) tty_puts(tty, "\033[?1002h"); - if ((changed & MODE_MOUSE_ALL) && - (mode & MODE_MOUSE_ALL)) + if (mode & MODE_MOUSE_ALL) tty_puts(tty, "\033[?1003h"); } if (changed & MODE_BRACKETPASTE) { |