From c9e22f36dd5c2c141a91c236ed3fb6910bd72e0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Wed, 31 Jan 2024 21:00:18 -0300 Subject: [PATCH] Don't jump to line while writing the line number in universal locator, wait to confirm with return. --- src/tools/ecode/universallocator.cpp | 43 +++++++++++++++++++--------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/tools/ecode/universallocator.cpp b/src/tools/ecode/universallocator.cpp index 829ee8dde..7cdee128e 100644 --- a/src/tools/ecode/universallocator.cpp +++ b/src/tools/ecode/universallocator.cpp @@ -246,21 +246,10 @@ void UniversalLocator::initLocateBar( UILocateBar* locateBar, UITextInput* locat String::startsWith( inputTxt, String( "l " ) ) ) { String lineColInput( inputTxt.substr( 2 ) ); std::vector parts = lineColInput.split( ':' ); - Int64 line, column = 0; - - if ( parts.size() > 0 && String::fromString( line, parts[0] ) && line - 1 >= 0 ) { - if ( parts.size() > 1 ) { - String::fromString( column, parts[1] ); - if ( column < 0 ) { - column = 0; - } - } - if ( mSplitter->curEditorExistsAndFocused() ) { - mSplitter->getCurEditor()->goToLine( { line - 1, column } ); - mSplitter->addCurrentPositionToNavigationHistory(); - } + Int64 line = 0; + if ( parts.size() > 0 && String::fromString( line, parts[0] ) && line - 1 >= 0 ) mLocateTable->setVisible( false ); - } + return; } else if ( !inputTxt.empty() && mLocateInput->getText()[0] == '>' ) { showCommandPalette(); } else if ( !inputTxt.empty() && mLocateInput->getText()[0] == ':' ) { @@ -280,6 +269,32 @@ void UniversalLocator::initLocateBar( UILocateBar* locateBar, UITextInput* locat } ); mLocateInput->addEventListener( Event::OnPressEnter, [this]( const Event* ) { KeyEvent keyEvent( mLocateTable, Event::KeyDown, KEY_RETURN, SCANCODE_UNKNOWN, 0, 0 ); + + const String& inputTxt = mLocateInput->getText(); + if ( mSplitter->curEditorExistsAndFocused() && + String::startsWith( inputTxt, String( "l " ) ) ) { + String lineColInput( inputTxt.substr( 2 ) ); + std::vector parts = lineColInput.split( ':' ); + Int64 line, column = 0; + + if ( parts.size() > 0 && String::fromString( line, parts[0] ) && line - 1 >= 0 ) { + if ( parts.size() > 1 ) { + String::fromString( column, parts[1] ); + if ( column < 0 ) { + column = 0; + } + } + + if ( mSplitter->curEditorExistsAndFocused() ) { + mSplitter->getCurEditor()->goToLine( { line - 1, column } ); + mSplitter->addCurrentPositionToNavigationHistory(); + } + + mLocateBarLayout->execute( "close-locatebar" ); + return; + } + } + mLocateTable->forceKeyDown( keyEvent ); } ); mLocateInput->addEventListener( Event::KeyDown, [this]( const Event* event ) {