diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-04-28 14:06:24 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-04-28 16:42:26 +0800 |
commit | a8d9f0a2d5f8b976c02bf8f83b17f812bd1c8a0a (patch) | |
tree | c80b69d5da4f46c4164d1fc64cff588161c06ca4 | |
parent | 5f710789f98bb06ba280cdda44bb0799510ce3ee (diff) | |
download | rneovim-a8d9f0a2d5f8b976c02bf8f83b17f812bd1c8a0a.tar.gz rneovim-a8d9f0a2d5f8b976c02bf8f83b17f812bd1c8a0a.tar.bz2 rneovim-a8d9f0a2d5f8b976c02bf8f83b17f812bd1c8a0a.zip |
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)
https://github.com/vim/vim/commit/e3e3828f935392bb3c2147a000db1c7b094a4360
Set 'mousetime' to 0 instead.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
-rw-r--r-- | test/old/testdir/test_termcodes.vim | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/test/old/testdir/test_termcodes.vim b/test/old/testdir/test_termcodes.vim index 61084a9261..85de65111e 100644 --- a/test/old/testdir/test_termcodes.vim +++ b/test/old/testdir/test_termcodes.vim @@ -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 = [ |