diff --git a/apps/shared/editable_cell_table_view_controller.cpp b/apps/shared/editable_cell_table_view_controller.cpp index 57e6e01d0..43206e6e6 100644 --- a/apps/shared/editable_cell_table_view_controller.cpp +++ b/apps/shared/editable_cell_table_view_controller.cpp @@ -17,8 +17,8 @@ bool EditableCellTableViewController::textFieldShouldFinishEditing(TextField * t return TextFieldDelegate::textFieldShouldFinishEditing(textField, event) || (event == Ion::Events::Down && selectedRow() < numberOfRows()-1) || (event == Ion::Events::Up && selectedRow() > 0) - || (event == Ion::Events::Right && selectedColumn() < numberOfColumns()-1) - || (event == Ion::Events::Left && selectedColumn() > 0); } + || (event == Ion::Events::Right && textField->cursorLocation() == textField->textLength() && selectedColumn() < numberOfColumns()-1) + || (event == Ion::Events::Left && textField->cursorLocation() == 0 && selectedColumn() > 0); } bool EditableCellTableViewController::textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) { AppsContainer * appsContainer = ((TextFieldDelegateApp *)app())->container(); diff --git a/escher/src/text_field.cpp b/escher/src/text_field.cpp index d8f52bc09..2d787d0cf 100644 --- a/escher/src/text_field.cpp +++ b/escher/src/text_field.cpp @@ -337,6 +337,9 @@ bool TextField::handleEvent(Ion::Events::Event event) { } return true; } + if (m_delegate->textFieldDidReceiveEvent(this, event)) { + return true; + } if (event == Ion::Events::Left && isEditing() && cursorLocation() > 0) { setCursorLocation(cursorLocation()-1); return true; @@ -353,9 +356,6 @@ bool TextField::handleEvent(Ion::Events::Event event) { setCursorLocation(textLength()); return true; } - if (m_delegate->textFieldDidReceiveEvent(this, event)) { - return true; - } if (textFieldShouldFinishEditing(event) && isEditing()) { char bufferText[ContentView::k_maxBufferSize]; strlcpy(bufferText, m_contentView.textBuffer(), ContentView::k_maxBufferSize);