mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[escher] Added textFieldDidHandleEvent to TextFieldDelegate.
Change-Id: Iad2ea114dd75632a0204c081b2345aeea8131798
This commit is contained in:
@@ -90,6 +90,7 @@ protected:
|
||||
};
|
||||
ContentView m_contentView;
|
||||
private:
|
||||
bool privateHandleEvent(Ion::Events::Event event);
|
||||
void deleteCharPrecedingCursor();
|
||||
bool deleteEndOfLine();
|
||||
void scrollToCursor();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user