summaryrefslogtreecommitdiffstats
path: root/src/os_unix.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2014-05-22 18:14:31 +0200
committerBram Moolenaar <Bram@vim.org>2014-05-22 18:14:31 +0200
commit90013c6a751e6574fbe49b529a3dbf1eacbef43d (patch)
tree5d682bca18d37e731684b8496e3286e77e196ec0 /src/os_unix.c
parentb777618d111e51b55ee452d3881d5ef5bc836765 (diff)
updated for version 7.4.305v7.4.305
Problem: Making 'ttymouse' empty after the xterm version was requested causes problems. (Elijah Griffin) Solution: Do not check for DEC mouse sequences when the xterm version was requested. Also don't request the xterm version when DEC mouse was enabled.
Diffstat (limited to 'src/os_unix.c')
-rw-r--r--src/os_unix.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/os_unix.c b/src/os_unix.c
index 65ce685605..78e9914b16 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -3667,6 +3667,8 @@ mch_setmouse(on)
void
check_mouse_termcode()
{
+ xterm_conflict_mouse = FALSE;
+
# ifdef FEAT_MOUSE_XTERM
if (use_xterm_mouse()
# ifdef FEAT_MOUSE_URXVT
@@ -3711,7 +3713,7 @@ check_mouse_termcode()
# endif
# ifdef FEAT_MOUSE_JSB
- /* conflicts with xterm mouse: "\033[" and "\033[M" ??? */
+ /* There is no conflict, but it was disabled for xterm before. */
if (!use_xterm_mouse()
# ifdef FEAT_GUI
&& !gui.in_use
@@ -3738,32 +3740,40 @@ check_mouse_termcode()
# endif
# ifdef FEAT_MOUSE_DEC
- /* conflicts with xterm mouse: "\033[" and "\033[M" */
- if (!use_xterm_mouse()
+ /* Conflicts with xterm mouse: "\033[" and "\033[M".
+ * Also conflicts with the xterm termresponse, skip this if it was
+ * requested already. */
+ if (!use_xterm_mouse() && !did_request_esc_sequence()
# ifdef FEAT_GUI
&& !gui.in_use
# endif
)
+ {
set_mouse_termcode(KS_DEC_MOUSE, (char_u *)(term_is_8bit(T_NAME)
? IF_EB("\233", CSI_STR) : IF_EB("\033[", ESC_STR "[")));
+ xterm_conflict_mouse = TRUE;
+ }
else
del_mouse_termcode(KS_DEC_MOUSE);
# endif
# ifdef FEAT_MOUSE_PTERM
/* same as the dec mouse */
- if (!use_xterm_mouse()
+ if (!use_xterm_mouse() && !did_request_esc_sequence()
# ifdef FEAT_GUI
&& !gui.in_use
# endif
)
+ {
set_mouse_termcode(KS_PTERM_MOUSE,
(char_u *) IF_EB("\033[", ESC_STR "["));
+ xterm_conflict_mouse = TRUE;
+ }
else
del_mouse_termcode(KS_PTERM_MOUSE);
# endif
# ifdef FEAT_MOUSE_URXVT
/* same as the dec mouse */
- if (use_xterm_mouse() == 3
+ if (use_xterm_mouse() == 3 && !did_request_esc_sequence()
# ifdef FEAT_GUI
&& !gui.in_use
# endif
@@ -3778,6 +3788,7 @@ check_mouse_termcode()
mch_setmouse(FALSE);
setmouse();
}
+ xterm_conflict_mouse = TRUE;
}
else
del_mouse_termcode(KS_URXVT_MOUSE);