fix(terminal): ignore left-release mouse action

if it is not proccesed by the terminal program
to prevent leaving Terminal mode after using
a mouse for window switching

closes #9483
closes #8691
This commit is contained in:
dm1try 2021-12-09 19:44:09 +03:00
parent 2fe60905f6
commit c96f7e29dc
2 changed files with 12 additions and 0 deletions

View File

@ -1296,6 +1296,12 @@ static bool send_mouse_event(Terminal *term, int c)
return mouse_win == curwin;
}
// ignore left release action if it was not proccessed above
// to prevent leaving Terminal mode after entering to it using a mouse
if (c == K_LEFTRELEASE && mouse_win->w_buffer->terminal == term) {
return false;
}
end:
ins_char_typebuf(c);
return true;

View File

@ -45,6 +45,12 @@ describe(':terminal mouse', function()
eq('nt', eval('mode(1)'))
end)
it('does not leave terminal mode on left-release', function()
if helpers.pending_win32(pending) then return end
feed('<LeftRelease>')
eq('t', eval('mode(1)'))
end)
describe('with mouse events enabled by the program', function()
before_each(function()
thelpers.enable_mouse()