aboutsummaryrefslogtreecommitdiff
path: root/tty.c
diff options
context:
space:
mode:
authornicm <nicm>2015-05-19 08:48:37 +0000
committernicm <nicm>2015-05-19 08:48:37 +0000
commit2c53b23d5968da2e796ead6ed9f8ff3c33b8bbfb (patch)
tree518f5233b7d8a20c23c80bdc813f4c0b25fb900a /tty.c
parent3f4ee98162cd5bb7000f93fec0e631e123b1281d (diff)
downloadrtmux-2c53b23d5968da2e796ead6ed9f8ff3c33b8bbfb.tar.gz
rtmux-2c53b23d5968da2e796ead6ed9f8ff3c33b8bbfb.tar.bz2
rtmux-2c53b23d5968da2e796ead6ed9f8ff3c33b8bbfb.zip
In terminfo, sometimes cvvis implies cnorm and sometimes it doesn't, so
don't assume it does. Fixes missing cursor with emacs-in-tmux-in-tmux.
Diffstat (limited to 'tty.c')
-rw-r--r--tty.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/tty.c b/tty.c
index a58ca937..63380c29 100644
--- a/tty.c
+++ b/tty.c
@@ -507,14 +507,17 @@ tty_update_mode(struct tty *tty, int mode, struct screen *s)
mode &= ~MODE_CURSOR;
changed = mode ^ tty->mode;
- if (changed & (MODE_CURSOR|MODE_BLINKING)) {
- if (mode & MODE_CURSOR) {
- if (mode & MODE_BLINKING &&
- tty_term_has(tty->term, TTYC_CVVIS))
- tty_putcode(tty, TTYC_CVVIS);
- else
- tty_putcode(tty, TTYC_CNORM);
- } else
+ if (changed & MODE_BLINKING) {
+ if (tty_term_has(tty->term, TTYC_CVVIS))
+ tty_putcode(tty, TTYC_CVVIS);
+ else
+ tty_putcode(tty, TTYC_CNORM);
+ changed |= MODE_CURSOR;
+ }
+ if (changed & MODE_CURSOR) {
+ if (mode & MODE_CURSOR)
+ tty_putcode(tty, TTYC_CNORM);
+ else
tty_putcode(tty, TTYC_CIVIS);
}
if (s != NULL && tty->cstyle != s->cstyle) {