From ca57ab54d759a3e265b19bbe31b57dfed00bbdd0 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 13 Apr 2019 14:53:16 +0200 Subject: [PATCH] patch 8.1.1165: no test for mouse clicks in the terminal tabpage line Problem: No test for mouse clicks in the terminal tabpage line. Solution: Add a test. (Dominique Pelle, closes #4247). Also init TabPageIdxs[], in case it's used before a redraw. --- src/screen.c | 19 +++++++++---- src/testdir/test_termcodes.vim | 50 +++++++++++++++++++++++++++++++++- src/version.c | 2 ++ 3 files changed, 65 insertions(+), 6 deletions(-) diff --git a/src/screen.c b/src/screen.c index 46e3f629f..1c21b7430 100644 --- a/src/screen.c +++ b/src/screen.c @@ -8638,6 +8638,18 @@ check_for_delay(int check_msg_scroll) } } +/* + * Init TabPageIdxs[] to zero: Clicking outside of tabs has no effect. + */ + static void +clear_TabPageIdxs(void) +{ + int scol; + + for (scol = 0; scol < Columns; ++scol) + TabPageIdxs[scol] = 0; +} + /* * screen_valid - allocate screen buffers if size changed * If "doclear" is TRUE: clear screen if it has been resized. @@ -8899,7 +8911,6 @@ give_up: must_redraw = CLEAR; /* need to clear the screen later */ if (doclear) screenclear2(); - #ifdef FEAT_GUI else if (gui.in_use && !gui.starting @@ -8919,6 +8930,7 @@ give_up: msg_col = Columns - 1; /* put cursor at last column */ } #endif + clear_TabPageIdxs(); entered = FALSE; --RedrawingDisabled; @@ -10435,10 +10447,7 @@ draw_tabline(void) return; #if defined(FEAT_STL_OPT) - - /* Init TabPageIdxs[] to zero: Clicking outside of tabs has no effect. */ - for (scol = 0; scol < Columns; ++scol) - TabPageIdxs[scol] = 0; + clear_TabPageIdxs(); /* Use the 'tabline' option if it's set. */ if (*p_tal != NUL) diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim index 949fa9481..9a8fe155f 100644 --- a/src/testdir/test_termcodes.vim +++ b/src/testdir/test_termcodes.vim @@ -165,7 +165,8 @@ func Test_xterm_mouse_drag_statusline() let save_mouse = &mouse let save_term = &term let save_ttymouse = &ttymouse - set mouse=a term=xterm + let save_laststatus = &laststatus + set mouse=a term=xterm laststatus=2 for ttymouse_val in ['xterm', 'sgr'] exe 'set ttymouse=' . ttymouse_val @@ -194,6 +195,53 @@ func Test_xterm_mouse_drag_statusline() call assert_equal(rowstatusline, winheight(0) + 1) endfor + let &mouse = save_mouse + let &term = save_term + let &ttymouse = save_ttymouse + let &laststatus = save_laststatus +endfunc + +func Test_xterm_mouse_click_tab() + let save_mouse = &mouse + let save_term = &term + let save_ttymouse = &ttymouse + set mouse=a term=xterm + let row = 1 + + for ttymouse_val in ['xterm', 'sgr'] + exe 'set ttymouse=' . ttymouse_val + e Xfoo + tabnew Xbar + + let a = split(execute(':tabs'), "\n") + call assert_equal(['Tab page 1', + \ ' Xfoo', + \ 'Tab page 2', + \ '> Xbar'], a) + + " Test clicking on tab names in the tabline at the top. + let col = 2 + redraw! + call MouseLeftClick(row, col) + call MouseLeftRelease(row, col) + let a = split(execute(':tabs'), "\n") + call assert_equal(['Tab page 1', + \ '> Xfoo', + \ 'Tab page 2', + \ ' Xbar'], a) + + let col = 9 + call MouseLeftClick(row, col) + call MouseLeftRelease(row, col) + let a = split(execute(':tabs'), "\n") + call assert_equal(['Tab page 1', + \ ' Xfoo', + \ 'Tab page 2', + \ '> Xbar'], a) + + %bwipe! + endfor + let &mouse = save_mouse let &term = save_term let &ttymouse = save_ttymouse diff --git a/src/version.c b/src/version.c index a53228ded..881c67aa0 100644 --- a/src/version.c +++ b/src/version.c @@ -771,6 +771,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1165, /**/ 1164, /**/ -- 2.50.1