changeset 16340:2f70fc41ff7e v8.1.1175

patch 8.1.1175: no test for dragging a tab and double click for new tab commit https://github.com/vim/vim/commit/e3e3828f935392bb3c2147a000db1c7b094a4360 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Apr 15 20:55:31 2019 +0200 patch 8.1.1175: no test for dragging a tab and double click for new tab Problem: No test for dragging a tab with the mouse and for creating a new tab by double clicking in the tabline. Solution: Add two tests. (Dominique Pelle, closes #4258)
author Bram Moolenaar <Bram@vim.org>
date Mon, 15 Apr 2019 21:00:05 +0200
parents 2b833d3a9a7e
children a5eebe25fbff
files src/testdir/test_termcodes.vim src/version.c
diffstat 2 files changed, 98 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -289,3 +289,99 @@ func Test_xterm_mouse_click_X_to_close_t
   let &term = save_term
   let &ttymouse = save_ttymouse
 endfunc
+
+func Test_xterm_mouse_drag_to_move_tab()
+  let save_mouse = &mouse
+  let save_term = &term
+  let save_ttymouse = &ttymouse
+  " Set 'mousetime' to 1 to avoid recognizing a double-click in the loop
+  set mouse=a term=xterm mousetime=1
+  let row = 1
+
+  for ttymouse_val in ['xterm', 'sgr']
+    exe 'set ttymouse=' . ttymouse_val
+    e Xtab1
+    tabnew Xtab2
+
+    let a = split(execute(':tabs'), "\n")
+    call assert_equal(['Tab page 1',
+        \              '    Xtab1',
+        \              'Tab page 2',
+        \              '>   Xtab2'], a)
+    redraw
+
+    " Click in tab2 and drag it to tab1.
+    " Check getcharmod() to verify that click is not
+    " interpreted as a spurious double-click.
+    call MouseLeftClick(row, 10)
+    call assert_equal(0, getcharmod())
+    for col in [9, 8, 7, 6]
+      call MouseLeftDrag(row, col)
+    endfor
+    call MouseLeftRelease(row, col)
+    let a = split(execute(':tabs'), "\n")
+    call assert_equal(['Tab page 1',
+        \              '>   Xtab2',
+        \              'Tab page 2',
+        \              '    Xtab1'], a)
+
+    %bwipe!
+  endfor
+
+  let &mouse = save_mouse
+  let &term = save_term
+  let &ttymouse = save_ttymouse
+  set mousetime&
+endfunc
+
+func Test_xterm_mouse_double_click_to_create_tab()
+  let save_mouse = &mouse
+  let save_term = &term
+  let save_ttymouse = &ttymouse
+  " Set 'mousetime' to a small value, so that double-click works but we don't
+  " have to wait long to avoid a triple-click.
+  set mouse=a term=xterm mousetime=100
+  let row = 1
+  let col = 10
+
+  for ttymouse_val in ['xterm', 'sgr']
+    exe 'set ttymouse=' . ttymouse_val
+    e Xtab1
+    tabnew Xtab2
+
+    let a = split(execute(':tabs'), "\n")
+    call assert_equal(['Tab page 1',
+        \              '    Xtab1',
+        \              'Tab page 2',
+        \              '>   Xtab2'], a)
+
+    redraw
+    call MouseLeftClick(row, col)
+    " Check getcharmod() to verify that first click is not
+    " interpreted as a spurious double-click.
+    call assert_equal(0, getcharmod())
+    call MouseLeftRelease(row, col)
+    call MouseLeftClick(row, col)
+    call assert_equal(32, getcharmod()) " double-click
+    call MouseLeftRelease(row, col)
+    let a = split(execute(':tabs'), "\n")
+    call assert_equal(['Tab page 1',
+        \              '    Xtab1',
+        \              'Tab page 2',
+        \              '>   [No Name]',
+        \              'Tab page 3',
+        \              '    Xtab2'], a)
+
+    if ttymouse_val !=# 'sgr'
+      " We need to sleep, or else MouseLeftClick() in next loop
+      " iteration will be interpreted as a spurious triple-click.
+      sleep 100m
+    endif
+    %bwipe!
+  endfor
+
+  let &mouse = save_mouse
+  let &term = save_term
+  let &ttymouse = save_ttymouse
+  set mousetime&
+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 */
 /**/
+    1175,
+/**/
     1174,
 /**/
     1173,