From 151423320e797c36283bff08fde6bdd0483faaf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Wed, 29 Mar 2017 18:25:27 +0200 Subject: [PATCH] [escher] Resolve bug: specify text field for controller with one only text buffer Change-Id: I371c37869e6e48b819cf4af70f7544e2844a3fee --- apps/calculation/edit_expression_controller.cpp | 2 +- apps/calculation/text_field.cpp | 2 +- escher/include/escher/text_field.h | 3 ++- escher/src/editable_text_cell.cpp | 2 +- escher/src/message_table_cell_with_editable_text.cpp | 2 +- escher/src/text_field.cpp | 7 ++++--- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/calculation/edit_expression_controller.cpp b/apps/calculation/edit_expression_controller.cpp index 10baa11a3..6ccb75372 100644 --- a/apps/calculation/edit_expression_controller.cpp +++ b/apps/calculation/edit_expression_controller.cpp @@ -67,7 +67,7 @@ void EditExpressionController::setTextBody(const char * text) { bool EditExpressionController::handleEvent(Ion::Events::Event event) { if (event == Ion::Events::Up) { if (m_calculationStore->numberOfCalculations() > 0) { - m_contentView.textField()->setEditing(false); + m_contentView.textField()->setEditing(false, false); app()->setFirstResponder(m_historyController); } return true; diff --git a/apps/calculation/text_field.cpp b/apps/calculation/text_field.cpp index 5c364369f..4dd94d543 100644 --- a/apps/calculation/text_field.cpp +++ b/apps/calculation/text_field.cpp @@ -3,7 +3,7 @@ namespace Calculation { TextField::TextField(Responder * parentResponder, char * textBuffer, size_t textBufferSize, TextFieldDelegate * delegate) : - ::TextField(parentResponder, textBuffer, textBuffer, textBufferSize, delegate) + ::TextField(parentResponder, textBuffer, textBuffer, textBufferSize, delegate, false) { setEditing(true); } diff --git a/escher/include/escher/text_field.h b/escher/include/escher/text_field.h index dcdcd2e05..123cb1f32 100644 --- a/escher/include/escher/text_field.h +++ b/escher/include/escher/text_field.h @@ -9,7 +9,7 @@ class TextField : public ScrollableView { public: TextField(Responder * parentResponder, char * textBuffer, char * draftTextBuffer, size_t textBufferSize, - TextFieldDelegate * delegate = nullptr, KDText::FontSize size = KDText::FontSize::Large, float horizontalAlignment = 0.0f, + TextFieldDelegate * delegate = nullptr, bool hasTwoBuffers = true, KDText::FontSize size = KDText::FontSize::Large, float horizontalAlignment = 0.0f, float verticalAlignment = 0.5f, KDColor textColor = KDColorBlack, KDColor = KDColorWhite); Toolbox * toolbox() override; bool isEditing() const; @@ -81,6 +81,7 @@ private: void scrollToCursor(); void scrollToAvoidWhiteSpace(); View * view() override; + bool m_hasTwoBuffers; TextFieldDelegate * m_delegate; }; diff --git a/escher/src/editable_text_cell.cpp b/escher/src/editable_text_cell.cpp index 76f2d7da3..729f5e11b 100644 --- a/escher/src/editable_text_cell.cpp +++ b/escher/src/editable_text_cell.cpp @@ -7,7 +7,7 @@ EditableTextCell::EditableTextCell(Responder * parentResponder, TextFieldDelegat KDText::FontSize size, float horizontalAlignment, float verticalAlignment, KDColor textColor, KDColor backgroundColor) : HighlightCell(), Responder(parentResponder), - m_textField(TextField(this, m_textBody, draftTextBuffer, 255, delegate, size, horizontalAlignment, verticalAlignment, textColor, backgroundColor)) + m_textField(TextField(this, m_textBody, draftTextBuffer, 255, delegate, true, size, horizontalAlignment, verticalAlignment, textColor, backgroundColor)) { } diff --git a/escher/src/message_table_cell_with_editable_text.cpp b/escher/src/message_table_cell_with_editable_text.cpp index fe32faade..cee862df5 100644 --- a/escher/src/message_table_cell_with_editable_text.cpp +++ b/escher/src/message_table_cell_with_editable_text.cpp @@ -5,7 +5,7 @@ MessageTableCellWithEditableText::MessageTableCellWithEditableText(Responder * parentResponder, TextFieldDelegate * textFieldDelegate, char * draftTextBuffer, I18n::Message message) : Responder(parentResponder), MessageTableCell(message), - m_textField(TextField(this, m_textBody, draftTextBuffer, 255, textFieldDelegate, KDText::FontSize::Large, 1.0f, 0.5f)) + m_textField(TextField(this, m_textBody, draftTextBuffer, 255, textFieldDelegate, true, KDText::FontSize::Large, 1.0f, 0.5f)) { } diff --git a/escher/src/text_field.cpp b/escher/src/text_field.cpp index 5ddabb1a0..7f5fa13f9 100644 --- a/escher/src/text_field.cpp +++ b/escher/src/text_field.cpp @@ -104,7 +104,7 @@ void TextField::ContentView::setEditing(bool isEditing, bool reinitDrafBuffer) { if (m_isEditing == isEditing) { return; } - if (m_isEditing == false && reinitDrafBuffer) { + if (reinitDrafBuffer) { reinitDraftTextBuffer(); } m_isEditing = isEditing; @@ -194,10 +194,11 @@ void TextField::ContentView::layoutSubviews() { } TextField::TextField(Responder * parentResponder, char * textBuffer, char * draftTextBuffer, - size_t textBufferSize, TextFieldDelegate * delegate, KDText::FontSize size, + size_t textBufferSize, TextFieldDelegate * delegate, bool hasTwoBuffers, KDText::FontSize size, float horizontalAlignment, float verticalAlignment, KDColor textColor, KDColor backgroundColor) : ScrollableView(parentResponder, &m_contentView), m_contentView(textBuffer, draftTextBuffer, textBufferSize, size,horizontalAlignment, verticalAlignment, textColor, backgroundColor), + m_hasTwoBuffers(hasTwoBuffers), m_delegate(delegate) { } @@ -285,7 +286,7 @@ bool TextField::handleEvent(Ion::Events::Event event) { strlcpy(bufferText, m_contentView.textBuffer(), ContentView::k_maxBufferSize); strlcpy(m_contentView.textBuffer(), m_contentView.draftTextBuffer(), m_contentView.bufferSize()); int cursorLoc = cursorLocation(); - setEditing(false); + setEditing(false, m_hasTwoBuffers); if (m_delegate->textFieldDidFinishEditing(this, text())) { reloadScroll(); return true;