From d4f3fc6b5c26476fbd27df847a0eda6b18e1ce32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Wed, 31 May 2017 10:42:21 +0200 Subject: [PATCH] [apps/calculation] Insert text rather than overwrite when selecting a history cell Change-Id: Ie2cbe92a14a64caa3d1b4eabce6dc6de4baaaa34 --- apps/calculation/edit_expression_controller.cpp | 8 +++++--- apps/calculation/edit_expression_controller.h | 2 +- apps/calculation/history_controller.cpp | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/calculation/edit_expression_controller.cpp b/apps/calculation/edit_expression_controller.cpp index 37c8b3414..278f4c53b 100644 --- a/apps/calculation/edit_expression_controller.cpp +++ b/apps/calculation/edit_expression_controller.cpp @@ -57,9 +57,11 @@ const char * EditExpressionController::textBody() { return ((ContentView *)view())->textField()->text(); } -void EditExpressionController::setTextBody(const char * text) { - ((ContentView *)view())->textField()->setEditing(true); - ((ContentView *)view())->textField()->setText(text); +void EditExpressionController::insertTextBody(const char * text) { + TextField * tf = ((ContentView *)view())->textField(); + tf->setEditing(true, false); + tf->insertTextAtLocation(text, tf->cursorLocation()); + tf->setCursorLocation(tf->cursorLocation() + strlen(text)); } bool EditExpressionController::handleEvent(Ion::Events::Event event) { diff --git a/apps/calculation/edit_expression_controller.h b/apps/calculation/edit_expression_controller.h index 305002eb3..9c019fe4b 100644 --- a/apps/calculation/edit_expression_controller.h +++ b/apps/calculation/edit_expression_controller.h @@ -18,7 +18,7 @@ public: void viewDidDisappear() override; bool handleEvent(Ion::Events::Event event) override; const char * textBody(); - void setTextBody(const char * text); + void insertTextBody(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; diff --git a/apps/calculation/history_controller.cpp b/apps/calculation/history_controller.cpp index 2a79b37f3..9ed465678 100644 --- a/apps/calculation/history_controller.cpp +++ b/apps/calculation/history_controller.cpp @@ -45,9 +45,9 @@ bool HistoryController::handleEvent(Ion::Events::Event event) { app()->setFirstResponder(editController); Calculation * calculation = m_calculationStore->calculationAtIndex(focusRow); if (subviewType == HistoryViewCell::SubviewType::Input) { - editController->setTextBody(calculation->inputText()); + editController->insertTextBody(calculation->inputText()); } else { - editController->setTextBody(calculation->outputText()); + editController->insertTextBody(calculation->outputText()); } return true; }