mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
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.
This commit is contained in:
parent
700dfaa86a
commit
ca57ab54d7
19
src/screen.c
19
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
|
* screen_valid - allocate screen buffers if size changed
|
||||||
* If "doclear" is TRUE: clear screen if it has been resized.
|
* 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 */
|
must_redraw = CLEAR; /* need to clear the screen later */
|
||||||
if (doclear)
|
if (doclear)
|
||||||
screenclear2();
|
screenclear2();
|
||||||
|
|
||||||
#ifdef FEAT_GUI
|
#ifdef FEAT_GUI
|
||||||
else if (gui.in_use
|
else if (gui.in_use
|
||||||
&& !gui.starting
|
&& !gui.starting
|
||||||
@ -8919,6 +8930,7 @@ give_up:
|
|||||||
msg_col = Columns - 1; /* put cursor at last column */
|
msg_col = Columns - 1; /* put cursor at last column */
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
clear_TabPageIdxs();
|
||||||
|
|
||||||
entered = FALSE;
|
entered = FALSE;
|
||||||
--RedrawingDisabled;
|
--RedrawingDisabled;
|
||||||
@ -10435,10 +10447,7 @@ draw_tabline(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
#if defined(FEAT_STL_OPT)
|
#if defined(FEAT_STL_OPT)
|
||||||
|
clear_TabPageIdxs();
|
||||||
/* Init TabPageIdxs[] to zero: Clicking outside of tabs has no effect. */
|
|
||||||
for (scol = 0; scol < Columns; ++scol)
|
|
||||||
TabPageIdxs[scol] = 0;
|
|
||||||
|
|
||||||
/* Use the 'tabline' option if it's set. */
|
/* Use the 'tabline' option if it's set. */
|
||||||
if (*p_tal != NUL)
|
if (*p_tal != NUL)
|
||||||
|
@ -165,7 +165,8 @@ func Test_xterm_mouse_drag_statusline()
|
|||||||
let save_mouse = &mouse
|
let save_mouse = &mouse
|
||||||
let save_term = &term
|
let save_term = &term
|
||||||
let save_ttymouse = &ttymouse
|
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']
|
for ttymouse_val in ['xterm', 'sgr']
|
||||||
exe 'set ttymouse=' . ttymouse_val
|
exe 'set ttymouse=' . ttymouse_val
|
||||||
@ -194,6 +195,53 @@ func Test_xterm_mouse_drag_statusline()
|
|||||||
call assert_equal(rowstatusline, winheight(0) + 1)
|
call assert_equal(rowstatusline, winheight(0) + 1)
|
||||||
endfor
|
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 &mouse = save_mouse
|
||||||
let &term = save_term
|
let &term = save_term
|
||||||
let &ttymouse = save_ttymouse
|
let &ttymouse = save_ttymouse
|
||||||
|
@ -771,6 +771,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1165,
|
||||||
/**/
|
/**/
|
||||||
1164,
|
1164,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user