Merge pull request #9143 from bfredl/nuclear

disable clearing almost everywhere, cleanup screen.c dead code
This commit is contained in:
Björn Linse 2018-10-22 14:53:45 +02:00 committed by GitHub
commit f20427451e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 119 additions and 185 deletions

View File

@ -1645,9 +1645,6 @@ void listdigraphs(void)
os_breakcheck();
dp++;
}
// clear screen, because some digraphs may be wrong, in which case we messed
// up ScreenLines
must_redraw = CLEAR;
}
static void printdigraph(digr_T *dp)

View File

@ -208,8 +208,8 @@ void do_exmode(int improved)
return;
save_msg_scroll = msg_scroll;
++RedrawingDisabled; /* don't redisplay the window */
++no_wait_return; /* don't wait for return */
RedrawingDisabled++; // don't redisplay the window
no_wait_return++; // don't wait for return
MSG(_("Entering Ex mode. Type \"visual\" to go to Normal mode."));
while (exmode_active) {
@ -253,10 +253,11 @@ void do_exmode(int improved)
}
}
--RedrawingDisabled;
--no_wait_return;
update_screen(CLEAR);
need_wait_return = FALSE;
RedrawingDisabled--;
no_wait_return--;
redraw_all_later(NOT_VALID);
update_screen(NOT_VALID);
need_wait_return = false;
msg_scroll = save_msg_scroll;
}
@ -6857,7 +6858,8 @@ static void ex_tabs(exarg_T *eap)
static void ex_mode(exarg_T *eap)
{
if (*eap->arg == NUL) {
ui_refresh();
must_redraw = CLEAR;
ex_redraw(eap);
} else {
EMSG(_(e_screenmode));
}
@ -6963,7 +6965,7 @@ do_exedit(
no_wait_return = 0;
need_wait_return = FALSE;
msg_scroll = 0;
must_redraw = CLEAR;
redraw_all_later(NOT_VALID);
normal_enter(false, true);
@ -7782,11 +7784,14 @@ static void ex_redraw(exarg_T *eap)
p_lz = FALSE;
validate_cursor();
update_topline();
update_screen(eap->forceit ? CLEAR :
VIsual_active ? INVERTED :
0);
if (need_maketitle)
if (eap->forceit) {
redraw_all_later(NOT_VALID);
}
update_screen(eap->forceit ? NOT_VALID
: VIsual_active ? INVERTED : 0);
if (need_maketitle) {
maketitle();
}
RedrawingDisabled = r;
p_lz = p;

View File

@ -214,8 +214,6 @@ static int hislen = 0; /* actual length of history tables */
/// user interrupting highlight function to not interrupt command-line.
static bool getln_interrupted_highlight = false;
static bool need_cursor_update = false;
#ifdef INCLUDE_GENERATED_DECLARATIONS
# include "ex_getln.c.generated.h"
@ -3020,8 +3018,6 @@ void cmdline_screen_cleared(void)
}
line = line->prev_ccline;
}
need_cursor_update = true;
}
/// called by ui_flush, do what redraws neccessary to keep cmdline updated.
@ -3481,10 +3477,7 @@ static void cursorcmd(void)
if (ccline.redraw_state < kCmdRedrawPos) {
ccline.redraw_state = kCmdRedrawPos;
}
if (need_cursor_update) {
need_cursor_update = false;
setcursor();
}
setcursor();
return;
}

View File

@ -1602,7 +1602,7 @@ static void conv_to_pvim(void)
do_cmdline_cmd("%s/\201\231/\370\334/ge");
// Assume the screen has been messed up: clear it and redraw.
redraw_later(CLEAR);
redraw_later(NOT_VALID);
MSG_ATTR((const char *)farsi_text_1, HL_ATTR(HLF_S));
}
@ -1623,7 +1623,7 @@ static void conv_to_pstd(void)
}
// Assume the screen has been messed up: clear it and redraw.
redraw_later(CLEAR);
redraw_later(NOT_VALID);
msg_attr((const char *)farsi_text_2, HL_ATTR(HLF_S));
}

View File

@ -191,8 +191,6 @@ EXTERN int cmdline_star INIT(= FALSE); /* cmdline is crypted */
EXTERN int exec_from_reg INIT(= FALSE); /* executing register */
EXTERN TriState screen_cleared INIT(= kFalse); // screen has been cleared
/*
* When '$' is included in 'cpoptions' option set:
* When a change command is given that deletes only part of a line, a dollar

View File

@ -832,12 +832,11 @@ void msg_end_prompt(void)
lines_left = -1;
}
/*
* wait for the user to hit a key (normally a return)
* if 'redraw' is TRUE, clear and redraw the screen
* if 'redraw' is FALSE, just redraw the screen
* if 'redraw' is -1, don't redraw at all
*/
/// wait for the user to hit a key (normally a return)
///
/// if 'redraw' is true, redraw the entire screen NOT_VALID
/// if 'redraw' is false, do a normal redraw
/// if 'redraw' is -1, don't redraw at all
void wait_return(int redraw)
{
int c;
@ -847,8 +846,9 @@ void wait_return(int redraw)
int save_Recording;
FILE *save_scriptout;
if (redraw == TRUE)
must_redraw = CLEAR;
if (redraw == true) {
redraw_all_later(NOT_VALID);
}
/* If using ":silent cmd", don't wait for a return. Also don't set
* need_wait_return to do it later. */

View File

@ -918,9 +918,9 @@ void curs_columns(
extra = ((int)prev_skipcol - (int)curwin->w_skipcol) / width;
if (extra > 0) {
win_ins_lines(curwin, 0, extra, false, false);
win_ins_lines(curwin, 0, extra, false);
} else if (extra < 0) {
win_del_lines(curwin, 0, -extra, false, false);
win_del_lines(curwin, 0, -extra, false);
}
} else {
curwin->w_skipcol = 0;

View File

@ -3980,8 +3980,8 @@ static char *set_bool_option(const int opt_idx, char_u *const varp,
/* Enable Arabic shaping (major part of what Arabic requires) */
if (!p_arshape) {
p_arshape = TRUE;
redraw_later_clear();
p_arshape = true;
redraw_all_later(NOT_VALID);
}
}

View File

@ -68,7 +68,7 @@ return {
type='bool', scope={'global'},
vi_def=true,
vim=true,
redraw={'everything', 'ui_option'},
redraw={'all_windows', 'ui_option'},
varname='p_arshape',
defaults={if_true={vi=true}}
@ -92,7 +92,7 @@ return {
full_name='ambiwidth', abbreviation='ambw',
type='string', scope={'global'},
vi_def=true,
redraw={'everything', 'ui_option'},
redraw={'all_windows', 'ui_option'},
varname='p_ambw',
defaults={if_true={vi="single"}}
},
@ -133,7 +133,7 @@ return {
full_name='background', abbreviation='bg',
type='string', scope={'global'},
vi_def=true,
redraw={'everything'},
redraw={'all_windows'},
varname='p_bg',
defaults={if_true={vi="light"}}
},
@ -662,7 +662,7 @@ return {
full_name='emoji', abbreviation='emo',
type='bool', scope={'global'},
vi_def=true,
redraw={'everything', 'ui_option'},
redraw={'all_windows', 'ui_option'},
varname='p_emoji',
defaults={if_true={vi=true}}
},
@ -671,7 +671,6 @@ return {
type='string', scope={'global'},
deny_in_modelines=true,
vi_def=true,
redraw={'everything'},
varname='p_enc',
defaults={if_true={vi=macros('ENC_DFLT')}}
},
@ -1023,7 +1022,7 @@ return {
deny_duplicates=true,
vi_def=true,
varname='p_guifont',
redraw={'everything', 'ui_option'},
redraw={'ui_option'},
defaults={if_true={vi=""}}
},
{
@ -1031,7 +1030,7 @@ return {
type='string', list='onecomma', scope={'global'},
vi_def=true,
varname='p_guifontset',
redraw={'everything', 'ui_option'},
redraw={'ui_option'},
defaults={if_true={vi=""}}
},
{
@ -1039,7 +1038,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
vi_def=true,
redraw={'everything', 'ui_option'},
redraw={'ui_option'},
varname='p_guifontwide',
defaults={if_true={vi=""}}
},
@ -1099,7 +1098,6 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
vi_def=true,
redraw={'everything'},
varname='p_hl',
defaults={if_true={vi=macros('HIGHLIGHT_INIT')}}
},
@ -1195,7 +1193,7 @@ return {
full_name='inccommand', abbreviation='icm',
type='string', scope={'global'},
vi_def=true,
redraw={'everything'},
redraw={'all_windows'},
varname='p_icm',
defaults={if_true={vi=""}}
},
@ -1399,7 +1397,7 @@ return {
full_name='linespace', abbreviation='lsp',
type='number', scope={'global'},
vi_def=true,
redraw={'everything', 'ui_option'},
redraw={'ui_option'},
varname='p_linespace',
defaults={if_true={vi=0}}
},
@ -2428,7 +2426,6 @@ return {
full_name='termencoding', abbreviation='tenc',
type='string', scope={'global'},
vi_def=true,
redraw={'everything'},
defaults={if_true={vi=""}}
},
{

View File

@ -167,12 +167,6 @@ void redraw_win_later(win_T *wp, int type)
}
}
/// Forces a complete redraw later. Also resets the highlighting.
void redraw_later_clear(void)
{
redraw_all_later(CLEAR);
}
/*
* Mark all windows to be redrawn later.
*/
@ -845,14 +839,6 @@ static void win_update(win_T *wp)
type = VALID;
}
// Trick: we want to avoid clearing the screen twice. screenclear() will
// set "screen_cleared" to kTrue. The special value kNone (which is still
// non-zero and thus not kFalse) will indicate that screenclear() was not
// called.
if (screen_cleared) {
screen_cleared = kNone;
}
/*
* If there are no changes on the screen that require a complete redraw,
* handle three cases:
@ -898,15 +884,14 @@ static void win_update(win_T *wp)
if (wp->w_lines[0].wl_lnum != wp->w_topline)
i += diff_check_fill(wp, wp->w_lines[0].wl_lnum)
- wp->w_old_topfill;
if (i < wp->w_height - 2) { /* less than a screen off */
/*
* Try to insert the correct number of lines.
* If not the last window, delete the lines at the bottom.
* win_ins_lines may fail when the terminal can't do it.
*/
if (i > 0)
check_for_delay(FALSE);
if (win_ins_lines(wp, 0, i, FALSE, wp == firstwin) == OK) {
if (i < wp->w_height - 2) { // less than a screen off
// Try to insert the correct number of lines.
// If not the last window, delete the lines at the bottom.
// win_ins_lines may fail when the terminal can't do it.
if (i > 0) {
check_for_delay(false);
}
if (win_ins_lines(wp, 0, i, false) == OK) {
if (wp->w_lines_valid != 0) {
/* Need to update rows that are new, stop at the
* first one that scrolled down. */
@ -964,11 +949,12 @@ static void win_update(win_T *wp)
/* ... but don't delete new filler lines. */
row -= wp->w_topfill;
if (row > 0) {
check_for_delay(FALSE);
if (win_del_lines(wp, 0, row, FALSE, wp == firstwin) == OK)
check_for_delay(false);
if (win_del_lines(wp, 0, row, false) == OK) {
bot_start = wp->w_height - row;
else
mid_start = 0; /* redraw all lines */
} else {
mid_start = 0; // redraw all lines
}
}
if ((row == 0 || bot_start < 999) && wp->w_lines_valid != 0) {
/*
@ -1006,31 +992,9 @@ static void win_update(win_T *wp)
}
}
/* When starting redraw in the first line, redraw all lines. When
* there is only one window it's probably faster to clear the screen
* first. */
// When starting redraw in the first line, redraw all lines.
if (mid_start == 0) {
mid_end = wp->w_height;
if (ONE_WINDOW) {
// Clear the screen when it was not done by win_del_lines() or
// win_ins_lines() above, "screen_cleared" is kFalse or kNone
// then.
if (screen_cleared != kTrue) {
screenclear();
}
// The screen was cleared, redraw the tab pages line.
if (redraw_tabline) {
draw_tabline();
}
}
}
/* When win_del_lines() or win_ins_lines() caused the screen to be
* cleared (only happens for the first window) or when screenclear()
* was called directly above, "must_redraw" will have been set to
* NOT_VALID, need to reset it here to avoid redrawing twice. */
if (screen_cleared == kTrue) {
must_redraw = 0;
}
} else {
/* Not VALID or INVERTED: redraw all lines. */
@ -1338,31 +1302,31 @@ static void win_update(win_T *wp)
* remaining text or scrolling fails, must redraw the
* rest. If scrolling works, must redraw the text
* below the scrolled text. */
if (row - xtra_rows >= wp->w_height - 2)
if (row - xtra_rows >= wp->w_height - 2) {
mod_bot = MAXLNUM;
else {
check_for_delay(FALSE);
if (win_del_lines(wp, row,
-xtra_rows, FALSE, FALSE) == FAIL)
} else {
check_for_delay(false);
if (win_del_lines(wp, row, -xtra_rows, false) == FAIL) {
mod_bot = MAXLNUM;
else
bot_start = wp->w_height + xtra_rows;
} else {
bot_start = wp->w_height + xtra_rows;
}
}
} else if (xtra_rows > 0) {
/* May scroll text down. If there is not enough
* remaining text of scrolling fails, must redraw the
* rest. */
if (row + xtra_rows >= wp->w_height - 2)
if (row + xtra_rows >= wp->w_height - 2) {
mod_bot = MAXLNUM;
else {
check_for_delay(FALSE);
if (win_ins_lines(wp, row + old_rows,
xtra_rows, FALSE, FALSE) == FAIL)
} else {
check_for_delay(false);
if (win_ins_lines(wp, row + old_rows, xtra_rows, false) == FAIL) {
mod_bot = MAXLNUM;
else if (top_end > row + old_rows)
/* Scrolled the part at the top that requires
* updating down. */
} else if (top_end > row + old_rows) {
// Scrolled the part at the top that requires
// updating down.
top_end += xtra_rows;
}
}
}
@ -6137,19 +6101,19 @@ static void screenclear2(void)
ui_call_grid_clear(1); // clear the display
clear_cmdline = false;
mode_displayed = false;
screen_cleared = kTrue; // can use contents of ScreenLines now
win_rest_invalid(firstwin);
redraw_cmdline = TRUE;
redraw_tabline = TRUE;
if (must_redraw == CLEAR) /* no need to clear again */
must_redraw = NOT_VALID;
redraw_all_later(NOT_VALID);
redraw_cmdline = true;
redraw_tabline = true;
if (must_redraw == CLEAR) {
must_redraw = NOT_VALID; // no need to clear again
}
compute_cmdrow();
msg_row = cmdline_row; /* put cursor on last line for messages */
msg_row = cmdline_row; // put cursor on last line for messages
msg_col = 0;
msg_scrolled = 0; /* can't scroll back */
msg_didany = FALSE;
msg_didout = FALSE;
msg_scrolled = 0; // can't scroll back
msg_didany = false;
msg_didout = false;
}
/*
@ -6200,13 +6164,13 @@ void setcursor(void)
/// If 'mayclear' is TRUE the screen will be cleared if it is faster than
/// scrolling.
/// Returns FAIL if the lines are not inserted, OK for success.
int win_ins_lines(win_T *wp, int row, int line_count, int invalid, int mayclear)
int win_ins_lines(win_T *wp, int row, int line_count, int invalid)
{
if (wp->w_height < 5) {
return FAIL;
}
return win_do_lines(wp, row, line_count, invalid, mayclear, false);
return win_do_lines(wp, row, line_count, invalid, false);
}
/// Delete "line_count" window lines at "row" in window "wp".
@ -6214,15 +6178,15 @@ int win_ins_lines(win_T *wp, int row, int line_count, int invalid, int mayclear)
/// If "mayclear" is TRUE the screen will be cleared if it is faster than
/// scrolling
/// Return OK for success, FAIL if the lines are not deleted.
int win_del_lines(win_T *wp, int row, int line_count, int invalid, int mayclear)
int win_del_lines(win_T *wp, int row, int line_count, int invalid)
{
return win_do_lines(wp, row, line_count, invalid, mayclear, true);
return win_do_lines(wp, row, line_count, invalid, true);
}
// Common code for win_ins_lines() and win_del_lines().
// Returns OK or FAIL when the work has been done.
static int win_do_lines(win_T *wp, int row, int line_count,
int invalid, int mayclear, int del)
int invalid, int del)
{
if (invalid) {
wp->w_lines_valid = 0;
@ -6232,12 +6196,6 @@ static int win_do_lines(win_T *wp, int row, int line_count,
return FAIL;
}
// only a few lines left: redraw is faster
if (mayclear && Rows - line_count < 5 && wp->w_width == Columns) {
screenclear(); /* will set wp->w_lines_valid to 0 */
return FAIL;
}
// Delete all remaining lines
if (row + line_count >= wp->w_height) {
screen_fill(wp->w_winrow + row, wp->w_winrow + wp->w_height,
@ -6263,19 +6221,6 @@ static int win_do_lines(win_T *wp, int row, int line_count,
return retval;
}
/*
* window 'wp' and everything after it is messed up, mark it for redraw
*/
static void win_rest_invalid(win_T *wp)
{
while (wp != NULL) {
redraw_win_later(wp, NOT_VALID);
wp->w_redr_status = TRUE;
wp = wp->w_next;
}
redraw_cmdline = TRUE;
}
/*
* The rest of the routines in this file perform screen manipulations. The
* given operation is performed physically on the screen. The corresponding

View File

@ -6566,7 +6566,7 @@ void do_highlight(const char *line, const bool forceit, const bool init)
}
init_highlight(true, true);
highlight_changed();
redraw_later_clear();
redraw_all_later(NOT_VALID);
return;
}
name_end = (const char *)skiptowhite((const char_u *)line);

View File

@ -1265,7 +1265,8 @@ static void win_exchange(long Prenum)
(void)win_comp_pos(); /* recompute window positions */
win_enter(wp, true);
redraw_later(CLEAR);
redraw_later(NOT_VALID);
redraw_win_later(wp, NOT_VALID);
}
/*
@ -1340,7 +1341,7 @@ static void win_rotate(int upwards, int count)
(void)win_comp_pos();
}
redraw_later(CLEAR);
redraw_all_later(NOT_VALID);
}
/*
@ -1477,10 +1478,10 @@ static void win_equal_rec(
|| topfr->fr_width != width || topfr->fr_win->w_wincol != col
) {
topfr->fr_win->w_winrow = row;
frame_new_height(topfr, height, FALSE, FALSE);
frame_new_height(topfr, height, false, false);
topfr->fr_win->w_wincol = col;
frame_new_width(topfr, width, FALSE, FALSE);
redraw_all_later(CLEAR);
frame_new_width(topfr, width, false, false);
redraw_all_later(NOT_VALID);
}
} else if (topfr->fr_layout == FR_ROW) {
topfr->fr_width = width;
@ -3105,7 +3106,7 @@ int win_new_tabpage(int after, char_u *filename)
newtp->tp_topframe = topframe;
last_status(FALSE);
redraw_all_later(CLEAR);
redraw_all_later(NOT_VALID);
apply_autocmds(EVENT_WINNEW, NULL, NULL, false, curbuf);
apply_autocmds(EVENT_WINENTER, NULL, NULL, false, curbuf);
@ -3310,10 +3311,9 @@ static void enter_tabpage(tabpage_T *tp, buf_T *old_curbuf, int trigger_enter_au
trigger_enter_autocmds, trigger_leave_autocmds);
prevwin = next_prevwin;
last_status(FALSE); /* status line may appear or disappear */
(void)win_comp_pos(); /* recompute w_winrow for all windows */
must_redraw = CLEAR; /* need to redraw everything */
diff_need_scrollbind = TRUE;
last_status(false); // status line may appear or disappear
(void)win_comp_pos(); // recompute w_winrow for all windows
diff_need_scrollbind = true;
/* The tabpage line may have appeared or disappeared, may need to resize
* the frames for that. When the Vim window was resized need to update
@ -3335,7 +3335,7 @@ static void enter_tabpage(tabpage_T *tp, buf_T *old_curbuf, int trigger_enter_au
apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
}
redraw_all_later(CLEAR);
redraw_all_later(NOT_VALID);
}
/*
@ -5443,7 +5443,7 @@ restore_snapshot (
win_comp_pos();
if (wp != NULL && close_curwin)
win_goto(wp);
redraw_all_later(CLEAR);
redraw_all_later(NOT_VALID);
}
clear_snapshot(curtab, idx);
}

View File

@ -149,7 +149,7 @@ describe('input()', function()
{EOB:~ }|
{T:Foo>}Bar^ |
]])
command('redraw!')
command('mode')
screen:expect{grid=[[
|
{EOB:~ }|
@ -165,7 +165,7 @@ describe('input()', function()
{EOB:~ }|
{T:Foo>}Ba^ |
]])
command('redraw!')
command('mode')
screen:expect{grid=[[
|
{EOB:~ }|
@ -347,7 +347,7 @@ describe('inputdialog()', function()
{EOB:~ }|
{T:Foo>}Bar^ |
]])
command('redraw!')
command('mode')
screen:expect{grid=[[
|
{EOB:~ }|
@ -363,7 +363,7 @@ describe('inputdialog()', function()
{EOB:~ }|
{T:Foo>}Ba^ |
]])
command('redraw!')
command('mode')
screen:expect{grid=[[
|
{EOB:~ }|

View File

@ -32,7 +32,7 @@ before_each(function()
highlight RBP4 guibg=Blue
let g:NUM_LVLS = 4
function Redraw()
redraw!
mode
return ''
endfunction
let g:id = ''

View File

@ -253,7 +253,7 @@ local function test_cmdline(linegrid)
]], cmdline=expectation}
-- erase information, so we check if it is retransmitted
command("redraw!")
command("mode")
screen:expect{grid=[[
^ |
{1:~ }|
@ -320,7 +320,7 @@ local function test_cmdline(linegrid)
{{' line1'}},
}}
command("redraw!")
command("mode")
screen:expect{grid=[[
^ |
{1:~ }|
@ -411,7 +411,7 @@ local function test_cmdline(linegrid)
pos = 4,
}}}
command("redraw!")
command("mode")
screen:expect{grid=[[
|
{2:[No Name] }|
@ -435,9 +435,9 @@ local function test_cmdline(linegrid)
feed("<c-c>")
screen:expect{grid=[[
|
^ |
{2:[No Name] }|
{1::}make^ |
{1::}make |
{3:[Command Line] }|
|
]], cmdline={{
@ -446,7 +446,6 @@ local function test_cmdline(linegrid)
pos = 4,
}}}
screen.cmdline = {}
command("redraw!")
screen:expect{grid=[[
^ |

View File

@ -65,7 +65,7 @@ describe("folded lines", function()
{1:~ }|
{1:~ }|
{1:~ }|
|
:set noarabicshape |
]])
feed_command("set number foldcolumn=2")
@ -114,7 +114,7 @@ describe("folded lines", function()
{1: ~}|
{1: ~}|
{1: ~}|
|
:set arabicshape |
]])
feed('zo')
@ -126,7 +126,7 @@ describe("folded lines", function()
{1: ~}|
{1: ~}|
{1: ~}|
|
:set arabicshape |
]])
feed_command('set noarabicshape')
@ -138,7 +138,7 @@ describe("folded lines", function()
{1: ~}|
{1: ~}|
{1: ~}|
|
:set noarabicshape |
]])
end)

View File

@ -122,7 +122,7 @@ describe('highlight defaults', function()
{0:~ }|
{0:~ }|
{2:[No Name] }|
|
:vsp |
]])
-- navigate to verify that the attributes are properly moved
feed('<c-w>j')
@ -140,7 +140,7 @@ describe('highlight defaults', function()
{0:~ }|
{0:~ }|
{1:[No Name] }|
|
:vsp |
]])
-- note that when moving to a window with small width nvim will increase
-- the width of the new active window at the expense of a inactive window
@ -160,7 +160,7 @@ describe('highlight defaults', function()
{0:~ }|
{0:~ }|
{2:[No Name] }|
|
:vsp |
]])
feed('<c-w>l')
screen:expect([[
@ -177,7 +177,7 @@ describe('highlight defaults', function()
{0:~ }|
{0:~ }|
{2:[No Name] }|
|
:vsp |
]])
feed('<c-w>h<c-w>h')
screen:expect([[
@ -194,7 +194,7 @@ describe('highlight defaults', function()
{0:~ }|
{0:~ }|
{2:[No Name] }|
|
:vsp |
]])
end)

View File

@ -530,7 +530,7 @@ describe('ui/mouse/input', function()
mouse |
support and selectio^n |
{0:~ }|
|
:tabprevious |
]])
feed('<LeftMouse><10,0><LeftRelease>') -- go to second tab
helpers.wait()
@ -540,7 +540,7 @@ describe('ui/mouse/input', function()
^this is bar |
{0:~ }|
{0:~ }|
|
:tabprevious |
]])
feed('<LeftDrag><4,1>')
screen:expect([[