changeset 16324:6b2412d0509f v8.1.1167

patch 8.1.1167: no test for closing tab by click in tabline commit https://github.com/vim/vim/commit/39f76c6ac0f5e07a0e608ddf920a67702ec83824 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Apr 13 22:13:23 2019 +0200 patch 8.1.1167: no test for closing tab by click in tabline Problem: No test for closing tab by click in tabline. Solution: Add a test. Also fix that dragging window separator could fail in a large terminal. (Dominique Pelle, closes #4253)
author Bram Moolenaar <Bram@vim.org>
date Sat, 13 Apr 2019 22:15:04 +0200
parents b8fcb5017058
children 97a120b07dc0
files src/testdir/test_termcodes.vim src/version.c
diffstat 2 files changed, 71 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -119,40 +119,38 @@ func Test_xterm_mouse_drag_window_separa
     let row = rowseparator
     let col = 1
 
-    if ttymouse_val ==# 'xterm' && row > 223
-      " When 'ttymouse' is 'xterm', row/col bigger than 223 are not supported.
-      continue
+    " When 'ttymouse' is 'xterm', row/col bigger than 223 are not supported.
+    if ttymouse_val !=# 'xterm' || row <= 223
+      call MouseLeftClick(row, col)
+      let row -= 1
+      call MouseLeftDrag(row, col)
+      call assert_equal(rowseparator - 1, winheight(0) + 1)
+      let row += 1
+      call MouseLeftDrag(row, col)
+      call assert_equal(rowseparator, winheight(0) + 1)
+      call MouseLeftRelease(row, col)
+      call assert_equal(rowseparator, winheight(0) + 1)
     endif
-
-    call MouseLeftClick(row, col)
-
-    let row -= 1
-    call MouseLeftDrag(row, col)
-    call assert_equal(rowseparator - 1, winheight(0) + 1)
-    let row += 1
-    call MouseLeftDrag(row, col)
-    call assert_equal(rowseparator, winheight(0) + 1)
-    call MouseLeftRelease(row, col)
-    call assert_equal(rowseparator, winheight(0) + 1)
-
     bwipe!
 
     " Split vertically and test dragging the vertical window separator.
     vsplit
     let colseparator = winwidth(0) + 1
-
     let row = 1
     let col = colseparator
-    call MouseLeftClick(row, col)
-    let col -= 1
-    call MouseLeftDrag(row, col)
-    call assert_equal(colseparator - 1, winwidth(0) + 1)
-    let col += 1
-    call MouseLeftDrag(row, col)
-    call assert_equal(colseparator, winwidth(0) + 1)
-    call MouseLeftRelease(row, col)
-    call assert_equal(colseparator, winwidth(0) + 1)
 
+    " When 'ttymouse' is 'xterm', row/col bigger than 223 are not supported.
+    if ttymouse_val !=# 'xterm' || col <= 223
+      call MouseLeftClick(row, col)
+      let col -= 1
+      call MouseLeftDrag(row, col)
+      call assert_equal(colseparator - 1, winwidth(0) + 1)
+      let col += 1
+      call MouseLeftDrag(row, col)
+      call assert_equal(colseparator, winwidth(0) + 1)
+      call MouseLeftRelease(row, col)
+      call assert_equal(colseparator, winwidth(0) + 1)
+    endif
     bwipe!
   endfor
 
@@ -221,7 +219,7 @@ func Test_xterm_mouse_click_tab()
 
     " Test clicking on tab names in the tabline at the top.
     let col = 2
-    redraw!
+    redraw
     call MouseLeftClick(row, col)
     call MouseLeftRelease(row, col)
     let a = split(execute(':tabs'), "\n")
@@ -246,3 +244,48 @@ func Test_xterm_mouse_click_tab()
   let &term = save_term
   let &ttymouse = save_ttymouse
 endfunc
+
+func Test_xterm_mouse_click_X_to_close_tab()
+  let save_mouse = &mouse
+  let save_term = &term
+  let save_ttymouse = &ttymouse
+  set mouse=a term=xterm
+  let row = 1
+  let col = &columns
+
+  for ttymouse_val in ['xterm', 'sgr']
+    if ttymouse_val ==# 'xterm' && col > 223
+      " When 'ttymouse' is 'xterm', row/col bigger than 223 are not supported.
+      continue
+    endif
+    exe 'set ttymouse=' . ttymouse_val
+    e Xtab1
+    tabnew Xtab2
+    tabnew Xtab3
+    tabn 2
+
+    let a = split(execute(':tabs'), "\n")
+    call assert_equal(['Tab page 1',
+        \              '    Xtab1',
+        \              'Tab page 2',
+        \              '>   Xtab2',
+        \              'Tab page 3',
+        \              '    Xtab3'], a)
+
+    " Click on "X" in tabline to close current tab i.e. Xtab2.
+    redraw
+    call MouseLeftClick(row, col)
+    call MouseLeftRelease(row, col)
+    let a = split(execute(':tabs'), "\n")
+    call assert_equal(['Tab page 1',
+        \              '    Xtab1',
+        \              'Tab page 2',
+        \              '>   Xtab3'], a)
+
+    %bwipe!
+  endfor
+
+  let &mouse = save_mouse
+  let &term = save_term
+  let &ttymouse = save_ttymouse
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1167,
+/**/
     1166,
 /**/
     1165,