patch 8.1.1165: no test for mouse clicks in the terminal tabpage line
Problem: No test for mouse clicks in the terminal tabpage line.
Solution: Add a test. (Dominique Pelle, closes #4247). Also init
TabPageIdxs[], in case it's used before a redraw.
diff --git a/src/screen.c b/src/screen.c
index 46e3f62..1c21b74 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -8639,6 +8639,18 @@
}
/*
+ * Init TabPageIdxs[] to zero: Clicking outside of tabs has no effect.
+ */
+ static void
+clear_TabPageIdxs(void)
+{
+ int scol;
+
+ for (scol = 0; scol < Columns; ++scol)
+ TabPageIdxs[scol] = 0;
+}
+
+/*
* screen_valid - allocate screen buffers if size changed
* If "doclear" is TRUE: clear screen if it has been resized.
* Returns TRUE if there is a valid screen to write to.
@@ -8899,7 +8911,6 @@
must_redraw = CLEAR; /* need to clear the screen later */
if (doclear)
screenclear2();
-
#ifdef FEAT_GUI
else if (gui.in_use
&& !gui.starting
@@ -8919,6 +8930,7 @@
msg_col = Columns - 1; /* put cursor at last column */
}
#endif
+ clear_TabPageIdxs();
entered = FALSE;
--RedrawingDisabled;
@@ -10435,10 +10447,7 @@
return;
#if defined(FEAT_STL_OPT)
-
- /* Init TabPageIdxs[] to zero: Clicking outside of tabs has no effect. */
- for (scol = 0; scol < Columns; ++scol)
- TabPageIdxs[scol] = 0;
+ clear_TabPageIdxs();
/* Use the 'tabline' option if it's set. */
if (*p_tal != NUL)
diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim
index 949fa94..9a8fe15 100644
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -165,7 +165,8 @@
let save_mouse = &mouse
let save_term = &term
let save_ttymouse = &ttymouse
- set mouse=a term=xterm
+ let save_laststatus = &laststatus
+ set mouse=a term=xterm laststatus=2
for ttymouse_val in ['xterm', 'sgr']
exe 'set ttymouse=' . ttymouse_val
@@ -197,4 +198,51 @@
let &mouse = save_mouse
let &term = save_term
let &ttymouse = save_ttymouse
+ let &laststatus = save_laststatus
+endfunc
+
+func Test_xterm_mouse_click_tab()
+ let save_mouse = &mouse
+ let save_term = &term
+ let save_ttymouse = &ttymouse
+ set mouse=a term=xterm
+ let row = 1
+
+ for ttymouse_val in ['xterm', 'sgr']
+ exe 'set ttymouse=' . ttymouse_val
+ e Xfoo
+ tabnew Xbar
+
+ let a = split(execute(':tabs'), "\n")
+ call assert_equal(['Tab page 1',
+ \ ' Xfoo',
+ \ 'Tab page 2',
+ \ '> Xbar'], a)
+
+ " Test clicking on tab names in the tabline at the top.
+ let col = 2
+ redraw!
+ call MouseLeftClick(row, col)
+ call MouseLeftRelease(row, col)
+ let a = split(execute(':tabs'), "\n")
+ call assert_equal(['Tab page 1',
+ \ '> Xfoo',
+ \ 'Tab page 2',
+ \ ' Xbar'], a)
+
+ let col = 9
+ call MouseLeftClick(row, col)
+ call MouseLeftRelease(row, col)
+ let a = split(execute(':tabs'), "\n")
+ call assert_equal(['Tab page 1',
+ \ ' Xfoo',
+ \ 'Tab page 2',
+ \ '> Xbar'], a)
+
+ %bwipe!
+ endfor
+
+ let &mouse = save_mouse
+ let &term = save_term
+ let &ttymouse = save_ttymouse
endfunc
diff --git a/src/version.c b/src/version.c
index a53228d..881c67a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1165,
+/**/
1164,
/**/
1163,