From 052d63dee5929dbfbf91ee7d761c9eaf30010895 Mon Sep 17 00:00:00 2001 From: Ben Jackson Date: Tue, 5 Jan 2021 22:11:48 +0000 Subject: [PATCH] Fix mouse interraction with the popup - don't handle events outside the window --- autoload/vimspector/internal/balloon.vim | 30 ++++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/autoload/vimspector/internal/balloon.vim b/autoload/vimspector/internal/balloon.vim index dc8f543..7575be4 100644 --- a/autoload/vimspector/internal/balloon.vim +++ b/autoload/vimspector/internal/balloon.vim @@ -166,29 +166,29 @@ function! vimspector#internal#balloon#CreateTooltip(is_hover, ...) else " assume we are inside vim func! MouseFilter(winid, key) + let handled = 0 if index(["\", "\<2-leftmouse>"], a:key) >= 0 let mouse_coords = getmousepos() " close the popup if mouse is clicked outside the window if mouse_coords['winid'] != a:winid call vimspector#internal#balloon#closeCallback() + else + " place the cursor according to the click + call win_execute(a:winid, ":call cursor(".mouse_coords['line'].", ".mouse_coords['column'].")") + + " expand the variable if we got double click + if a:key == "\<2-leftmouse>" && mouse_coords['winid'] == a:winid + " forward line number to python, since vim does not allow us to focus + " the correct window + call py3eval("_vimspector_session.ExpandVariable(".line('.', a:winid).")") + let handled = 1 + endif endif - - " place the cursor according to the click - call win_execute(a:winid, ":call cursor(".mouse_coords['line'].", ".mouse_coords['column'].")") - - " expand the variable if we got double click - if a:key == "\<2-leftmouse>" && mouse_coords['winid'] == a:winid - " forward line number to python, since vim does not allow us to focus - " the correct window - call py3eval("_vimspector_session.ExpandVariable(".line('.', a:winid).")") - endif - - return 1 endif - return 0 + return handled endfunc - func! CursorFiler(winid, key) + func! CursorFilter(winid, key) if index(['j', 'k'], a:key) >= 0 call win_execute(a:winid, ':normal '.a:key) @@ -229,7 +229,7 @@ function! vimspector#internal#balloon#CreateTooltip(is_hover, ...) let config['resize'] = 1 let s:float_win = popup_beval(body, config) else - let config['filter'] = "CursorFiler" + let config['filter'] = "CursorFilter" let config['moved'] = "any" let s:float_win = popup_atcursor(body, config) endif