diff --git a/apps/code/editor_controller.cpp b/apps/code/editor_controller.cpp index ebe5e0519..0f9e89fb2 100644 --- a/apps/code/editor_controller.cpp +++ b/apps/code/editor_controller.cpp @@ -29,6 +29,10 @@ void EditorController::didBecomeFirstResponder() { app()->setFirstResponder(&m_textArea); } +void EditorController::viewWillAppear() { + m_textArea.moveCursor(strlen(m_textArea.text() - m_textArea.cursorLocation())); +} + void EditorController::viewDidDisappear() { m_scriptParameterController->scriptContentEditionDidFinish(); } diff --git a/apps/code/editor_controller.h b/apps/code/editor_controller.h index 2e894a9a4..e279a3053 100644 --- a/apps/code/editor_controller.h +++ b/apps/code/editor_controller.h @@ -17,6 +17,7 @@ public: View * view() override { return &m_textArea; } bool handleEvent(Ion::Events::Event event) override; void didBecomeFirstResponder() override; + void viewWillAppear() override; void viewDidDisappear() override; ViewController::DisplayParameter displayParameter() override { return ViewController::DisplayParameter::WantsMaximumSpace; } diff --git a/escher/src/text_area.cpp b/escher/src/text_area.cpp index 1966a2dd9..eccb7ffe8 100644 --- a/escher/src/text_area.cpp +++ b/escher/src/text_area.cpp @@ -334,7 +334,6 @@ Toolbox * TextArea::toolbox() { bool TextArea::handleEvent(Ion::Events::Event event) { if (m_delegate != nullptr && m_delegate->textAreaDidReceiveEvent(this, event)) { - return true; } else if (Responder::handleEvent(event)) { // The only event Responder handles is 'Toolbox' displaying. return true; @@ -386,4 +385,5 @@ void TextArea::moveCursor(int deltaX) { for (int i = 0; i < numberSteps; i++) { m_contentView.moveCursorIndex(sign); } + scrollToContentRect(m_contentView.cursorRect(), true); }