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:
@@ -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
|
||||
|
@@ -771,6 +771,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1175,
|
||||
/**/
|
||||
1174,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user