From 470767340a52ea3f19fa00bdd61788962cb7f9f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Wed, 31 Jan 2018 14:53:53 +0100 Subject: [PATCH] [apps] Calculation: OK on an empty textfield re-do the last user input kept in cache --- apps/calculation/edit_expression_controller.cpp | 8 +++++--- apps/calculation/edit_expression_controller.h | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/calculation/edit_expression_controller.cpp b/apps/calculation/edit_expression_controller.cpp index 0df8a0f17..5062d8d7a 100644 --- a/apps/calculation/edit_expression_controller.cpp +++ b/apps/calculation/edit_expression_controller.cpp @@ -51,6 +51,7 @@ EditExpressionController::EditExpressionController(Responder * parentResponder, m_historyController(historyController), m_calculationStore(calculationStore) { + m_cacheBuffer[0] = 0; } const char * EditExpressionController::textBody() { @@ -67,6 +68,7 @@ void EditExpressionController::insertTextBody(const char * text) { bool EditExpressionController::handleEvent(Ion::Events::Event event) { if (event == Ion::Events::Up) { if (m_calculationStore->numberOfCalculations() > 0) { + m_cacheBuffer[0] = 0; ((ContentView *)view())->textField()->setEditing(false, false); app()->setFirstResponder(m_historyController); } @@ -83,10 +85,9 @@ void EditExpressionController::didBecomeFirstResponder() { } bool EditExpressionController::textFieldDidReceiveEvent(::TextField * textField, Ion::Events::Event event) { - if (textField->isEditing() && textField->textFieldShouldFinishEditing(event) && textField->draftTextLength() == 0 && m_calculationStore->numberOfCalculations() > 0) { + if (textField->isEditing() && textField->textFieldShouldFinishEditing(event) && textField->draftTextLength() == 0 && m_cacheBuffer[0] != 0) { App * calculationApp = (App *)app(); - const char * lastTextBody = m_calculationStore->calculationAtIndex(m_calculationStore->numberOfCalculations()-1)->inputText(); - m_calculationStore->push(lastTextBody, calculationApp->localContext()); + m_calculationStore->push(m_cacheBuffer, calculationApp->localContext()); m_historyController->reload(); ((ContentView *)view())->mainView()->scrollToCell(0, m_historyController->numberOfRows()-1); return true; @@ -96,6 +97,7 @@ bool EditExpressionController::textFieldDidReceiveEvent(::TextField * textField, bool EditExpressionController::textFieldDidFinishEditing(::TextField * textField, const char * text, Ion::Events::Event event) { App * calculationApp = (App *)app(); + strlcpy(m_cacheBuffer, textBody(), TextField::maxBufferSize()); m_calculationStore->push(textBody(), calculationApp->localContext()); m_historyController->reload(); ((ContentView *)view())->mainView()->scrollToCell(0, m_historyController->numberOfRows()-1); diff --git a/apps/calculation/edit_expression_controller.h b/apps/calculation/edit_expression_controller.h index 9c019fe4b..50f4e27ff 100644 --- a/apps/calculation/edit_expression_controller.h +++ b/apps/calculation/edit_expression_controller.h @@ -43,6 +43,7 @@ private: View * loadView() override; void unloadView(View * view) override; Shared::TextFieldDelegateApp * textFieldDelegateApp() override; + char m_cacheBuffer[TextField::maxBufferSize()]; HistoryController * m_historyController; CalculationStore * m_calculationStore; };