vim-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 vim/vim#4258)

e3e3828f93

Set 'mousetime' to 0 instead.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq 2023-04-28 14:06:24 +08:00
parent 5f710789f9
commit a8d9f0a2d5

View File

@ -261,6 +261,104 @@ func Test_xterm_mouse_click_X_to_close_tab()
" 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
set mouse=a mousetime=0
let row = 1
for ttymouse_val in ['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
set mouse=a mousetime=100
let row = 1
let col = 10
for ttymouse_val in ['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
" Test for translation of special key codes (<xF1>, <xF2>, etc.)
func Test_Keycode_Translation()
let keycodes = [