mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[escher] In textfield: when calling textFieldDidHandleEvent, precise if
there was any modification in the text
This commit is contained in:
committed by
EmilieNumworks
parent
66ba406093
commit
e8793c429c
@@ -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);
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user