From bf6da61ca2b2bde0ccc46c350cb7fee86f1b82d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Wed, 21 Nov 2018 11:58:00 +0100 Subject: [PATCH] [escher/text_field] Fix privateHandleEvent text reset --- escher/include/escher/text_field_delegate.h | 6 +++--- escher/src/text_field.cpp | 10 ++++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/escher/include/escher/text_field_delegate.h b/escher/include/escher/text_field_delegate.h index 2558f1062..0fae1bc21 100644 --- a/escher/include/escher/text_field_delegate.h +++ b/escher/include/escher/text_field_delegate.h @@ -7,9 +7,9 @@ class TextFieldDelegate { public: virtual bool textFieldShouldFinishEditing(TextField * textField, Ion::Events::Event event) = 0; virtual bool textFieldDidReceiveEvent(TextField * textField, Ion::Events::Event event) = 0; - virtual bool textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) { return false; }; - virtual bool textFieldDidAbortEditing(TextField * textField) {return false;}; - virtual bool textFieldDidHandleEvent(TextField * textField, bool returnValue, bool textSizeDidChange) { return returnValue; }; + virtual bool textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) { return false; } + virtual bool textFieldDidAbortEditing(TextField * textField) { return false; } + virtual bool textFieldDidHandleEvent(TextField * textField, bool returnValue, bool textSizeDidChange) { return returnValue; } }; #endif diff --git a/escher/src/text_field.cpp b/escher/src/text_field.cpp index 5e9ac4747..d0567669b 100644 --- a/escher/src/text_field.cpp +++ b/escher/src/text_field.cpp @@ -262,7 +262,7 @@ bool TextField::privateHandleEvent(Ion::Events::Event event) { * This will call textFieldDidAbortEditing if the textfield is still editing, * which we do not want, as we are not really aborting edition, just * displaying a pop-up before returning to edition. - * We thus set editiong to false. */ + * We thus set editing to false. */ setEditing(false, m_hasTwoBuffers); if (m_delegate->textFieldDidFinishEditing(this, text(), event)) { /* We allow overscroll to avoid calling layoutSubviews twice because the @@ -270,14 +270,12 @@ bool TextField::privateHandleEvent(Ion::Events::Event event) { reloadScroll(true); return true; } - setEditing(true, m_hasTwoBuffers); + setEditing(true, false); if (m_hasTwoBuffers) { /* if the text was refused (textInputDidFinishEditing returned false, we * reset the textfield in the same state as before */ - char bufferDraft[ContentView::k_maxBufferSize]; - strlcpy(bufferDraft, m_contentView.textBuffer(), ContentView::k_maxBufferSize); - setText(bufferText); - setText(bufferDraft); + setText(m_contentView.textBuffer()); + strlcpy(m_contentView.textBuffer(), bufferText, ContentView::k_maxBufferSize); setCursorLocation(cursorLoc); } return true;