From e8b162f704fa679ee0222fbef2edea4739dedb1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Sat, 28 Jan 2023 02:41:50 -0300 Subject: [PATCH] ecode: LSP Minor improvement in tooltips. --- src/tools/ecode/plugins/lsp/lspclientplugin.cpp | 11 +++++++++-- src/tools/ecode/plugins/lsp/lspclientplugin.hpp | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/tools/ecode/plugins/lsp/lspclientplugin.cpp b/src/tools/ecode/plugins/lsp/lspclientplugin.cpp index d14914414..a08cf0f6a 100644 --- a/src/tools/ecode/plugins/lsp/lspclientplugin.cpp +++ b/src/tools/ecode/plugins/lsp/lspclientplugin.cpp @@ -393,6 +393,12 @@ void LSPClientPlugin::onRegister( UICodeEditor* editor ) { mClientManager.run( editor->getDocumentRef() ); } ) ); + listeners.push_back( + editor->addEventListener( Event::OnCursorPosChange, [&, editor]( const Event* ) { + if ( mSymbolInfoShowing ) + hideTooltip( editor ); + } ) ); + mEditors.insert( { editor, listeners } ); mEditorsTags.insert( { editor, {} } ); mEditorDocs[editor] = editor->getDocumentRef().get(); @@ -416,9 +422,9 @@ void LSPClientPlugin::getSymbolInfo( UICodeEditor* editor ) { server->documentHover( editor->getDocument().getURI(), editor->getDocument().getSelection().start(), [&, editor]( const Int64&, const LSPHover& resp ) { - if ( resp.range.isValid() && !resp.contents.empty() && - !resp.contents[0].value.empty() ) { + if ( !resp.contents.empty() && !resp.contents[0].value.empty() ) { editor->runOnMainThread( [editor, resp, this]() { + mSymbolInfoShowing = true; displayTooltip( editor, resp, editor->getScreenPosition( editor->getDocument().getSelection().start() ) @@ -491,6 +497,7 @@ bool LSPClientPlugin::onCreateContextMenu( UICodeEditor* editor, UIPopUpMenu* me } void LSPClientPlugin::hideTooltip( UICodeEditor* editor ) { + mSymbolInfoShowing = false; UITooltip* tooltip = nullptr; if ( editor && ( tooltip = editor->getTooltip() ) && tooltip->isVisible() ) { editor->setTooltipText( "" ); diff --git a/src/tools/ecode/plugins/lsp/lspclientplugin.hpp b/src/tools/ecode/plugins/lsp/lspclientplugin.hpp index c9fa75052..adc8191ee 100644 --- a/src/tools/ecode/plugins/lsp/lspclientplugin.hpp +++ b/src/tools/ecode/plugins/lsp/lspclientplugin.hpp @@ -85,6 +85,7 @@ class LSPClientPlugin : public UICodeEditorPlugin { bool mReady{ false }; bool mOldDontAutoHideOnMouseMove{ false }; bool mOldUsingCustomStyling{ false }; + bool mSymbolInfoShowing{ false }; std::map mKeyBindings; /* cmd, shortcut */ std::map> mDelayedDocs; Uint32 mHoverWaitCb;