[escher] Added textFieldDidHandleEvent to TextFieldDelegate.

Change-Id: Iad2ea114dd75632a0204c081b2345aeea8131798
This commit is contained in:
Léa Saviot
2017-12-04 16:31:07 +01:00
parent b8a856dd27
commit 53c8b2215f
3 changed files with 35 additions and 27 deletions

View File

@@ -90,6 +90,7 @@ protected:
};
ContentView m_contentView;
private:
bool privateHandleEvent(Ion::Events::Event event);
void deleteCharPrecedingCursor();
bool deleteEndOfLine();
void scrollToCursor();

View File

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

View File

@@ -275,31 +275,8 @@ bool TextField::insertTextAtLocation(const char * text, int location) {
return false;
}
void TextField::deleteCharPrecedingCursor() {
m_contentView.deleteCharPrecedingCursor();
scrollToCursor();
layoutSubviews();
}
bool TextField::deleteEndOfLine() {
if (m_contentView.deleteEndOfLine()) {
scrollToCursor();
layoutSubviews();
return true;
}
return false;
}
KDSize TextField::minimalSizeForOptimalDisplay() const {
return KDSize(0, m_contentView.textHeight());
}
bool TextField::textFieldShouldFinishEditing(Ion::Events::Event event) {
return m_delegate->textFieldShouldFinishEditing(this, event);
}
bool TextField::handleEvent(Ion::Events::Event event) {
assert(m_delegate != nullptr);
bool TextField::privateHandleEvent(Ion::Events::Event event) {
assert(m_delegate != nullptr);
if (m_delegate->textFieldDidReceiveEvent(this, event)) {
return true;
}
@@ -412,6 +389,35 @@ bool TextField::handleEvent(Ion::Events::Event event) {
return false;
}
void TextField::deleteCharPrecedingCursor() {
m_contentView.deleteCharPrecedingCursor();
scrollToCursor();
layoutSubviews();
}
bool TextField::deleteEndOfLine() {
if (m_contentView.deleteEndOfLine()) {
scrollToCursor();
layoutSubviews();
return true;
}
return false;
}
KDSize TextField::minimalSizeForOptimalDisplay() const {
return KDSize(0, m_contentView.textHeight());
}
bool TextField::textFieldShouldFinishEditing(Ion::Events::Event event) {
return m_delegate->textFieldShouldFinishEditing(this, event);
}
bool TextField::handleEvent(Ion::Events::Event event) {
assert(m_delegate != nullptr);
bool didHandleEvent = privateHandleEvent(event);
return m_delegate->textFieldDidHandleEvent(this, event, didHandleEvent);
}
void TextField::scrollToCursor() {
if (!isEditing()) {
return;