[escher] In textfield: when calling textFieldDidHandleEvent, precise if

there was any modification in the text
This commit is contained in:
Émilie Feral
2017-12-21 16:46:27 +01:00
committed by EmilieNumworks
parent 66ba406093
commit e8793c429c
6 changed files with 8 additions and 7 deletions

View File

@@ -322,7 +322,7 @@ bool MenuController::textFieldDidAbortEditing(TextField * textField, const char
return true;
}
bool MenuController::textFieldDidHandleEvent(TextField * textField, Ion::Events::Event event, bool returnValue) {
bool MenuController::textFieldDidHandleEvent(TextField * textField, Ion::Events::Event event, bool returnValue, bool textHasChanged) {
int scriptExtensionLength = strlen(ScriptStore::k_scriptExtension);
if (textField->isEditing() && textField->cursorLocation() > textField->draftTextLength() - scriptExtensionLength) {
textField->setCursorLocation(textField->draftTextLength() - scriptExtensionLength);

View File

@@ -53,7 +53,7 @@ public:
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;
bool textFieldDidHandleEvent(TextField * textField, Ion::Events::Event event, bool returnValue) override;
bool textFieldDidHandleEvent(TextField * textField, Ion::Events::Event event, bool returnValue, bool textHasChanged) override;
Toolbox * toolboxForTextField(TextField * textField) override { return nullptr; }
/* ButtonRowDelegate */

View File

@@ -57,8 +57,8 @@ void CalculationView::selectSubview(int subviewIndex) {
m_highlightedSubviewIndex = subviewIndex;
}
bool CalculationView::textFieldDidHandleEvent(::TextField * textField, Ion::Events::Event event, bool returnValue) {
if (returnValue) {
bool CalculationView::textFieldDidHandleEvent(::TextField * textField, Ion::Events::Event event, bool returnValue, bool textHasChanged) {
if (returnValue && textHasChanged) {
updateCalculationLayoutFromIndex(m_highlightedSubviewIndex-1);
}
return returnValue;

View File

@@ -20,7 +20,7 @@ public:
void selectSubview(int subviewIndex);
/* TextField delegate */
bool textFieldDidHandleEvent(TextField * textField, Ion::Events::Event event, bool returnValue) override;
bool textFieldDidHandleEvent(TextField * textField, Ion::Events::Event event, bool returnValue, bool textHasChanged) override;
bool textFieldShouldFinishEditing(TextField * textField, Ion::Events::Event event) override;
bool textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) override;

View File

@@ -9,7 +9,7 @@ public:
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, const char * text) {return false;};
virtual bool textFieldDidHandleEvent(TextField * textField, Ion::Events::Event event, bool returnValue) { return returnValue; };
virtual bool textFieldDidHandleEvent(TextField * textField, Ion::Events::Event event, bool returnValue, bool textHasChanged) { return returnValue; };
virtual Toolbox * toolboxForTextField(TextField * textField) = 0;
};

View File

@@ -419,8 +419,9 @@ bool TextField::textFieldShouldFinishEditing(Ion::Events::Event event) {
bool TextField::handleEvent(Ion::Events::Event event) {
assert(m_delegate != nullptr);
size_t previousTextLength = strlen(text());
bool didHandleEvent = privateHandleEvent(event);
return m_delegate->textFieldDidHandleEvent(this, event, didHandleEvent);
return m_delegate->textFieldDidHandleEvent(this, event, didHandleEvent, strlen(text()) != previousTextLength);
}
void TextField::scrollToCursor() {