Try to turn on less-capable mouse modes when turning on more-capable, to
authornicm <nicm@openbsd.org>
Fri, 31 Dec 2021 11:35:49 +0000 (11:35 +0000)
committernicm <nicm@openbsd.org>
Fri, 31 Dec 2021 11:35:49 +0000 (11:35 +0000)
increase the chances we get something even if the terminal doesn't support
the one we really want. GitHub issue 3020.

usr.bin/tmux/tty.c

index d43097d..6327405 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty.c,v 1.414 2021/12/10 12:42:37 nicm Exp $ */
+/* $OpenBSD: tty.c,v 1.415 2021/12/31 11:35:49 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -791,26 +791,19 @@ tty_update_mode(struct tty *tty, int mode, struct screen *s)
 
        if ((changed & ALL_MOUSE_MODES) && tty_term_has(term, TTYC_KMOUS)) {
                /*
-                * 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 the mouse modes have changed, clear then all 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 (tty->mode & MODE_MOUSE_STANDARD)
-                       tty_puts(tty, "\033[?1000l");
-               if (tty->mode & MODE_MOUSE_BUTTON)
-                       tty_puts(tty, "\033[?1002l");
-               if (tty->mode & MODE_MOUSE_ALL)
-                       tty_puts(tty, "\033[?1003l");
+               tty_puts(tty, "\033[?1006l\033[?1000l\033[?1002l\033[?1003l");
                if (mode & ALL_MOUSE_MODES)
                        tty_puts(tty, "\033[?1006h");
-               if (mode & MODE_MOUSE_STANDARD)
-                       tty_puts(tty, "\033[?1000h");
-               if (mode & MODE_MOUSE_BUTTON)
-                       tty_puts(tty, "\033[?1002h");
                if (mode & MODE_MOUSE_ALL)
-                       tty_puts(tty, "\033[?1003h");
+                       tty_puts(tty, "\033[?1000h\033[?1002h\033[?1003h");
+               if (mode & MODE_MOUSE_BUTTON)
+                       tty_puts(tty, "\033[?1000h\033[?1002h");
+               else if (mode & MODE_MOUSE_STANDARD)
+                       tty_puts(tty, "\033[?1000h");
        }
        if (changed & MODE_BRACKETPASTE) {
                if (mode & MODE_BRACKETPASTE)