0
0
mirror of https://github.com/vim/vim.git synced 2025-09-30 04:44:14 -04:00

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)
This commit is contained in:
Bram Moolenaar
2019-04-15 20:55:31 +02:00
parent 8dc4c72923
commit e3e3828f93
2 changed files with 98 additions and 0 deletions

View File

@@ -289,3 +289,99 @@ func Test_xterm_mouse_click_X_to_close_tab()
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

View File

@@ -771,6 +771,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1175,
/**/
1174,
/**/