]> granicus.if.org Git - vim/commitdiff
patch 8.1.1167: no test for closing tab by click in tabline v8.1.1167
authorBram Moolenaar <Bram@vim.org>
Sat, 13 Apr 2019 20:13:23 +0000 (22:13 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 13 Apr 2019 20:13:23 +0000 (22:13 +0200)
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)

src/testdir/test_termcodes.vim
src/version.c

index 9a8fe155fc1a8cea23bc5c6807f4b585ce45f37c..958436cb444adbbf8482df07557bd98449078742 100644 (file)
@@ -119,40 +119,38 @@ func Test_xterm_mouse_drag_window_separator()
     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
index cd7bb3f568119dcfd73eacff9eafca17cc7ddc56..a12bd0945ef41e0200a8cdeb25d123d3cf66b4f4 100644 (file)
@@ -771,6 +771,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1167,
 /**/
     1166,
 /**/