diff --git a/apps/calculation/edit_expression_controller.cpp b/apps/calculation/edit_expression_controller.cpp index a456f04e2..37c8b3414 100644 --- a/apps/calculation/edit_expression_controller.cpp +++ b/apps/calculation/edit_expression_controller.cpp @@ -80,6 +80,18 @@ void EditExpressionController::didBecomeFirstResponder() { app()->setFirstResponder(((ContentView *)view())->textField()); } +bool EditExpressionController::textFieldDidReceiveEvent(::TextField * textField, Ion::Events::Event event) { + if (textField->textFieldShouldFinishEditing(event) && textField->isEditing() && strlen(textField->text()) == 0 && m_calculationStore->numberOfCalculations() > 0) { + App * calculationApp = (App *)app(); + const char * lastTextBody = m_calculationStore->calculationAtIndex(m_calculationStore->numberOfCalculations()-1)->inputText(); + m_calculationStore->push(lastTextBody, calculationApp->localContext()); + m_historyController->reload(); + ((ContentView *)view())->mainView()->scrollToCell(0, m_historyController->numberOfRows()-1); + return true; + } + return textFieldDelegateApp()->textFieldDidReceiveEvent(textField, event); +} + bool EditExpressionController::textFieldDidFinishEditing(::TextField * textField, const char * text, Ion::Events::Event event) { App * calculationApp = (App *)app(); m_calculationStore->push(textBody(), calculationApp->localContext()); diff --git a/apps/calculation/edit_expression_controller.h b/apps/calculation/edit_expression_controller.h index 39c38a088..305002eb3 100644 --- a/apps/calculation/edit_expression_controller.h +++ b/apps/calculation/edit_expression_controller.h @@ -19,6 +19,7 @@ public: bool handleEvent(Ion::Events::Event event) override; const char * textBody(); void setTextBody(const char * text); +bool textFieldDidReceiveEvent(::TextField * textField, Ion::Events::Event event) override; bool textFieldDidFinishEditing(::TextField * textField, const char * text, Ion::Events::Event event) override; bool textFieldDidAbortEditing(::TextField * textField, const char * text) override; private: