commit 472acdb6dd0d30e0642b9134a6fb2c1de4c18f35
Author: Egmont Koblinger <egmont@gmail.com>
Date: Fri Feb 14 22:14:19 2020 +0100
Ticket #3954: Fix mouse handling with newer terminfo entries
diff --git a/lib/tty/key.c b/lib/tty/key.c
index 1706755f3..96cd69517 100644
a
|
b
|
tty_get_event (struct Gpm_Event *event, gboolean redo_event, gboolean block) |
2127 | 2127 | #endif /* KEY_MOUSE */ |
2128 | 2128 | || c == MCKEY_EXTENDED_MOUSE)) |
2129 | 2129 | { |
2130 | | /* Mouse event */ |
2131 | | xmouse_get_event (event, c == MCKEY_EXTENDED_MOUSE); |
| 2130 | /* Mouse event. See tickets 2956 and 3954 for extended mode detection. */ |
| 2131 | xmouse_get_event (event, c == MCKEY_EXTENDED_MOUSE |
| 2132 | #ifdef KEY_MOUSE |
| 2133 | || (c == KEY_MOUSE && xmouse_seq == NULL && xmouse_extended_seq != NULL) |
| 2134 | #endif /* KEY_MOUSE */ |
| 2135 | ); |
2132 | 2136 | c = (event->type != 0) ? EV_MOUSE : EV_NONE; |
2133 | 2137 | } |
2134 | 2138 | else if (c == MCKEY_BRACKETED_PASTING_START) |
diff --git a/lib/tty/mouse.c b/lib/tty/mouse.c
index e7616a74f..bfc94ed70 100644
a
|
b
|
init_mouse (void) |
90 | 90 | |
91 | 91 | case MOUSE_XTERM_NORMAL_TRACKING: |
92 | 92 | case MOUSE_XTERM_BUTTON_EVENT_TRACKING: |
93 | | define_sequence (MCKEY_MOUSE, xmouse_seq, MCKEY_NOACTION); |
94 | | define_sequence (MCKEY_EXTENDED_MOUSE, xmouse_extended_seq, MCKEY_NOACTION); |
| 93 | if (xmouse_seq != NULL) |
| 94 | { |
| 95 | define_sequence (MCKEY_MOUSE, xmouse_seq, MCKEY_NOACTION); |
| 96 | } |
| 97 | if (xmouse_extended_seq != NULL) |
| 98 | { |
| 99 | define_sequence (MCKEY_EXTENDED_MOUSE, xmouse_extended_seq, MCKEY_NOACTION); |
| 100 | } |
95 | 101 | break; |
96 | 102 | |
97 | 103 | default: |
diff --git a/lib/tty/tty.c b/lib/tty/tty.c
index 611a80b89..a02c004c3 100644
a
|
b
|
tty_init_xterm_support (gboolean is_xterm) |
361 | 361 | } |
362 | 362 | } |
363 | 363 | |
364 | | /* No termcap for SGR extended mouse (yet), hardcode it for now */ |
| 364 | /* There's only one termcap entry "kmous", typically containing "\E[M" or "\E[<". |
| 365 | * We need the former in xmouse_seq, the latter in xmouse_extended_seq. |
| 366 | * See tickets 2956 and 3954 for details. */ |
365 | 367 | if (xmouse_seq != NULL) |
| 368 | { |
| 369 | if (strcmp (xmouse_seq, ESC_STR "[<") == 0) |
| 370 | { |
| 371 | xmouse_seq = NULL; |
| 372 | } |
366 | 373 | xmouse_extended_seq = ESC_STR "[<"; |
| 374 | } |
367 | 375 | } |
368 | 376 | |
369 | 377 | /* --------------------------------------------------------------------------------------------- */ |