From 5c8206abbeed7cb51607803539473eb828fa7d7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Mon, 11 Jul 2022 22:25:11 -0300 Subject: [PATCH] TextDocument::save fix. Function name typo fix. UICodeEditor focus fix. --- include/eepp/ui/tools/uicodeeditorsplitter.hpp | 2 +- src/eepp/ui/doc/textdocument.cpp | 6 ++++-- src/eepp/ui/tools/uicodeeditorsplitter.cpp | 8 ++++---- src/eepp/ui/uicodeeditor.cpp | 2 ++ src/tools/ecode/ecode.cpp | 10 ++++++++-- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/include/eepp/ui/tools/uicodeeditorsplitter.hpp b/include/eepp/ui/tools/uicodeeditorsplitter.hpp index bbba789f7..ef530f4e9 100644 --- a/include/eepp/ui/tools/uicodeeditorsplitter.hpp +++ b/include/eepp/ui/tools/uicodeeditorsplitter.hpp @@ -169,7 +169,7 @@ class EE_API UICodeEditorSplitter { UIWidget* getCurWidget() const; - void setCurentWidget( UIWidget* curWidget ); + void setCurrentWidget( UIWidget* curWidget ); bool curWidgetExists() const; diff --git a/src/eepp/ui/doc/textdocument.cpp b/src/eepp/ui/doc/textdocument.cpp index e5bb069a7..c2f59138e 100644 --- a/src/eepp/ui/doc/textdocument.cpp +++ b/src/eepp/ui/doc/textdocument.cpp @@ -506,9 +506,11 @@ bool TextDocument::save( IOStream& stream, bool keepUndoRedoStatus ) { } } if ( mLineEnding == LineEnding::CRLF ) { - text[text.size() - 1] = '\r'; + if ( text[text.size() - 1] == '\n' ) { + text[text.size() - 1] = '\r'; + text += "\n"; + } stream.write( text.c_str(), text.size() ); - stream.write( &nl, 1 ); } else { stream.write( text.c_str(), text.size() ); } diff --git a/src/eepp/ui/tools/uicodeeditorsplitter.cpp b/src/eepp/ui/tools/uicodeeditorsplitter.cpp index e0e800352..0feba58a8 100644 --- a/src/eepp/ui/tools/uicodeeditorsplitter.cpp +++ b/src/eepp/ui/tools/uicodeeditorsplitter.cpp @@ -284,7 +284,7 @@ UICodeEditor* UICodeEditorSplitter::createCodeEditor() { mCurEditor->copyFilePath(); } ); editor->addEventListener( Event::OnFocus, [&]( const Event* event ) { - setCurrentEditor( event->getNode()->asType() ); + setCurrentWidget( event->getNode()->asType() ); } ); editor->addEventListener( Event::OnTextChanged, [&]( const Event* event ) { mClient->onDocumentModified( event->getNode()->asType(), @@ -437,7 +437,7 @@ void UICodeEditorSplitter::setCurrentEditor( UICodeEditor* editor ) { mClient->onDocumentStateChanged( editor, editor->getDocument() ); } -void UICodeEditorSplitter::setCurentWidget( UIWidget* curWidget ) { +void UICodeEditorSplitter::setCurrentWidget( UIWidget* curWidget ) { if ( curWidget->isType( UI_TYPE_CODEEDITOR ) ) { setCurrentEditor( curWidget->asType() ); return; @@ -477,7 +477,7 @@ UICodeEditorSplitter::createWidgetInTabWidget( UITabWidget* tabWidget, UIWidget* UITab* tab = tabWidget->add( tabName, widget ); widget->setData( (UintPtr)tab ); widget->addEventListener( Event::OnFocus, [&]( const Event* event ) { - setCurentWidget( event->getNode()->asType() ); + setCurrentWidget( event->getNode()->asType() ); } ); widget->addEventListener( Event::OnTitleChange, [&]( const Event* event ) { const TextEvent* tevent = static_cast( event ); @@ -524,7 +524,7 @@ UITabWidget* UICodeEditorSplitter::createEditorWithTabWidget( Node* parent, bool setCurrentEditor( tabWidget->getTabSelected()->getOwnedWidget()->asType() ); } else { - setCurentWidget( tabWidget->getTabSelected()->getOwnedWidget()->asType() ); + setCurrentWidget( tabWidget->getTabSelected()->getOwnedWidget()->asType() ); } } ); tabWidget->setTabTryCloseCallback( [&]( UITab* tab ) -> bool { diff --git a/src/eepp/ui/uicodeeditor.cpp b/src/eepp/ui/uicodeeditor.cpp index d07cc49dc..f6e3b03ba 100644 --- a/src/eepp/ui/uicodeeditor.cpp +++ b/src/eepp/ui/uicodeeditor.cpp @@ -1635,6 +1635,8 @@ const bool& UICodeEditor::isLocked() const { void UICodeEditor::setLocked( bool locked ) { if ( mLocked != locked ) { mLocked = locked; + if ( !mLocked && hasFocus() ) + mDoc->setActiveClient( this ); invalidateDraw(); } } diff --git a/src/tools/ecode/ecode.cpp b/src/tools/ecode/ecode.cpp index 7e58a5ea1..9776f5703 100644 --- a/src/tools/ecode/ecode.cpp +++ b/src/tools/ecode/ecode.cpp @@ -2198,7 +2198,10 @@ UITerminal* App::createNewTerminal( const std::string& title, UITabWidget* inTab mSplitter->removeUnusedTab( tabWidget ); ret.first->setIcon( findIcon( "filetype-bash" ) ); term->setTitle( title ); - term->setColorScheme( mTerminalColorSchemes.at( mTerminalCurrentColorScheme ) ); + auto csIt = mTerminalColorSchemes.find( mTerminalCurrentColorScheme ); + term->setColorScheme( csIt != mTerminalColorSchemes.end() + ? mTerminalColorSchemes.at( mTerminalCurrentColorScheme ) + : TerminalColorScheme::getDefault() ); term->addEventListener( Event::OnTitleChange, [&]( const Event* event ) { if ( event->getNode() != mSplitter->getCurWidget() ) return; @@ -2368,7 +2371,10 @@ void App::setTerminalColorScheme( const std::string& name ) { if ( name != mTerminalCurrentColorScheme ) { mTerminalCurrentColorScheme = name; mConfig.term.colorScheme = name; - applyTerminalColorScheme( mTerminalColorSchemes.at( mTerminalCurrentColorScheme ) ); + auto csIt = mTerminalColorSchemes.find( mTerminalCurrentColorScheme ); + applyTerminalColorScheme( csIt != mTerminalColorSchemes.end() + ? mTerminalColorSchemes.at( mTerminalCurrentColorScheme ) + : TerminalColorScheme::getDefault() ); mNotificationCenter->addNotification( String::format( i18n( "terminal_color_scheme_set", "Terminal color scheme: %s" ).toUtf8().c_str(), mTerminalCurrentColorScheme.c_str() ) );