diff --git a/apps/shared/list_controller.cpp b/apps/shared/list_controller.cpp index 0b8487d1d..80bc1ef65 100644 --- a/apps/shared/list_controller.cpp +++ b/apps/shared/list_controller.cpp @@ -222,7 +222,7 @@ bool ListController::handleEvent(Ion::Events::Event event) { } return true; } - if ((event.hasText() || event == Ion::Events::XNT || event == Ion::Events::Paste) + if ((event.hasText() || event == Ion::Events::XNT || event == Ion::Events::Paste || event == Ion::Events::Toolbox || event == Ion::Events::Var) && selectedColumn() == 1 && (selectedRow() != numberOfRows() - 1 || m_functionStore->numberOfFunctions() == m_functionStore->maxNumberOfFunctions())) { diff --git a/apps/shared/text_field_delegate_app.cpp b/apps/shared/text_field_delegate_app.cpp index 22ae44e3a..f7d6c155e 100644 --- a/apps/shared/text_field_delegate_app.cpp +++ b/apps/shared/text_field_delegate_app.cpp @@ -48,6 +48,9 @@ bool TextFieldDelegateApp::textFieldDidReceiveEvent(TextField * textField, Ion:: } } if (event == Ion::Events::Var) { + if (!textField->isEditing()) { + textField->setEditing(true); + } AppsContainer * appsContainer = (AppsContainer *)textField->app()->container(); VariableBoxController * variableBoxController = appsContainer->variableBoxController(); variableBoxController->setTextFieldCaller(textField); diff --git a/escher/src/text_field.cpp b/escher/src/text_field.cpp index b305de83e..69a992c87 100644 --- a/escher/src/text_field.cpp +++ b/escher/src/text_field.cpp @@ -296,6 +296,11 @@ bool TextField::textFieldShouldFinishEditing(Ion::Events::Event event) { bool TextField::handleEvent(Ion::Events::Event event) { assert(m_delegate != nullptr); if (Responder::handleEvent(event)) { + /* The only event Responder handles is 'Toolbox' displaying. In that case, + * the text field is forced into editing mode. */ + if (!isEditing()) { + setEditing(true); + } return true; } if (event == Ion::Events::Left && isEditing() && cursorLocation() > 0) {