diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-04-28 15:34:51 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-04-28 16:43:38 +0800 |
commit | 552632c959d01870860e64337603871d14ba965f (patch) | |
tree | 481541eb94091f2b0bc41973070c759b39797942 | |
parent | b947beb058f7d855b8a409c8d0d13ff8579ac672 (diff) | |
download | rneovim-552632c959d01870860e64337603871d14ba965f.tar.gz rneovim-552632c959d01870860e64337603871d14ba965f.tar.bz2 rneovim-552632c959d01870860e64337603871d14ba965f.zip |
vim-patch:8.1.2306: double and triple clicks are not tested
Problem: Double and triple clicks are not tested.
Solution: Test mouse clicks to select text. (closes vim/vim#5226)
https://github.com/vim/vim/commit/f36a2c7e60d86b1a1733a8f51ed72da9c6f76eb8
Co-authored-by: Bram Moolenaar <Bram@vim.org>
-rw-r--r-- | test/old/testdir/test_termcodes.vim | 102 |
1 files changed, 90 insertions, 12 deletions
diff --git a/test/old/testdir/test_termcodes.vim b/test/old/testdir/test_termcodes.vim index 4106cec19a..23b816682f 100644 --- a/test/old/testdir/test_termcodes.vim +++ b/test/old/testdir/test_termcodes.vim @@ -562,8 +562,11 @@ func Test_term_mouse_drag_to_move_tab() \ 'Tab page 2', \ '# Xtab1'], a, msg) - " brief sleep to avoid causing a double-click - sleep 20m + " Click elsewhere so that click in next iteration is not + " interpreted as unwanted double-click. + call MouseLeftClick(row, 11) + call MouseLeftRelease(row, 11) + %bwipe! endfor @@ -581,25 +584,17 @@ func Test_term_mouse_double_click_to_create_tab() " call test_override('no_query_mouse', 1) " 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 + " set mouse=a term=xterm mousetime=200 + set mouse=a mousetime=200 let row = 1 let col = 10 - let round = 0 for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec let msg = 'ttymouse=' .. ttymouse_val " exe 'set ttymouse=' .. ttymouse_val e Xtab1 tabnew Xtab2 - if round > 0 - " We need to sleep, or else the first MouseLeftClick() will be - " interpreted as a spurious triple-click. - sleep 100m - endif - let round += 1 - let a = split(execute(':tabs'), "\n") call assert_equal(['Tab page 1', \ '# Xtab1', @@ -623,6 +618,11 @@ func Test_term_mouse_double_click_to_create_tab() \ 'Tab page 3', \ '# Xtab2'], a, msg) + " Click elsewhere so that click in next iteration is not + " interpreted as unwanted double click. + call MouseLeftClick(row, col + 1) + call MouseLeftRelease(row, col + 1) + %bwipe! endfor @@ -633,6 +633,84 @@ func Test_term_mouse_double_click_to_create_tab() set mousetime& endfunc +" Test double/triple/quadruple click in normal mode to visually select. +func Test_term_mouse_multiple_clicks_to_visually_select() + let save_mouse = &mouse + let save_term = &term + " let save_ttymouse = &ttymouse + " call test_override('no_query_mouse', 1) + " set mouse=a term=xterm mousetime=200 + set mouse=a mousetime=200 + new + + for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec + let msg = 'ttymouse=' .. ttymouse_val + " exe 'set ttymouse=' .. ttymouse_val + call setline(1, ['foo [foo bar] foo', 'foo']) + + " Double-click on word should visually select the word. + call MouseLeftClick(1, 2) + call assert_equal(0, getcharmod(), msg) + call MouseLeftRelease(1, 2) + call MouseLeftClick(1, 2) + call assert_equal(32, getcharmod(), msg) " double-click + call MouseLeftRelease(1, 2) + call assert_equal('v', mode(), msg) + norm! r1 + call assert_equal(['111 [foo bar] foo', 'foo'], getline(1, '$'), msg) + + " Double-click on opening square bracket should visually + " select the whole [foo bar]. + call MouseLeftClick(1, 5) + call assert_equal(0, getcharmod(), msg) + call MouseLeftRelease(1, 5) + call MouseLeftClick(1, 5) + call assert_equal(32, getcharmod(), msg) " double-click + call MouseLeftRelease(1, 5) + call assert_equal('v', mode(), msg) + norm! r2 + call assert_equal(['111 222222222 foo', 'foo'], getline(1, '$'), msg) + + " Triple-click should visually select the whole line. + call MouseLeftClick(1, 3) + call assert_equal(0, getcharmod(), msg) + call MouseLeftRelease(1, 3) + call MouseLeftClick(1, 3) + call assert_equal(32, getcharmod(), msg) " double-click + call MouseLeftRelease(1, 3) + call MouseLeftClick(1, 3) + call assert_equal(64, getcharmod(), msg) " triple-click + call MouseLeftRelease(1, 3) + call assert_equal('V', mode(), msg) + norm! r3 + call assert_equal(['33333333333333333', 'foo'], getline(1, '$'), msg) + + " Quadruple-click should start visual block select. + call MouseLeftClick(1, 2) + call assert_equal(0, getcharmod(), msg) + call MouseLeftRelease(1, 2) + call MouseLeftClick(1, 2) + call assert_equal(32, getcharmod(), msg) " double-click + call MouseLeftRelease(1, 2) + call MouseLeftClick(1, 2) + call assert_equal(64, getcharmod(), msg) " triple-click + call MouseLeftRelease(1, 2) + call MouseLeftClick(1, 2) + call assert_equal(96, getcharmod(), msg) " quadruple-click + call MouseLeftRelease(1, 2) + call assert_equal("\<c-v>", mode(), msg) + norm! r4 + call assert_equal(['34333333333333333', 'foo'], getline(1, '$'), msg) + endfor + + let &mouse = save_mouse + " let &term = save_term + " let &ttymouse = save_ttymouse + set mousetime& + " call test_override('no_query_mouse', 0) + bwipe! +endfunc + func Test_xterm_mouse_click_in_fold_columns() new let save_mouse = &mouse |