diff --git a/escher/include/escher/editable_field.h b/escher/include/escher/editable_field.h index bdee14acc..008b2a167 100644 --- a/escher/include/escher/editable_field.h +++ b/escher/include/escher/editable_field.h @@ -5,6 +5,11 @@ #include #include +/* TODO: improve classes hierarchy to share selection handling (and some other + * features) between EditableField and TextInput. Refactor the following classes: + * InputEventHandler, TextInput, TextArea, EditableField, LayoutField, + * TextField, and their delegates! */ + class EditableField : public InputEventHandler { public: using InputEventHandler::InputEventHandler; diff --git a/escher/include/escher/input_event_handler.h b/escher/include/escher/input_event_handler.h index c033e1055..b5fed665f 100644 --- a/escher/include/escher/input_event_handler.h +++ b/escher/include/escher/input_event_handler.h @@ -3,6 +3,8 @@ #include +// See TODO in EditableField + class InputEventHandlerDelegate; class InputEventHandler { diff --git a/escher/include/escher/layout_field.h b/escher/include/escher/layout_field.h index 5826ad7b3..663458c20 100644 --- a/escher/include/escher/layout_field.h +++ b/escher/include/escher/layout_field.h @@ -11,6 +11,8 @@ #include #include +// See TODO in EditableField + class LayoutField : public ScrollableView, public ScrollViewDataSource, public EditableField { public: LayoutField(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, LayoutFieldDelegate * delegate = nullptr) : @@ -41,7 +43,8 @@ public: /* Responder */ bool handleEventWithText(const char * text, bool indentation = false, bool forceCursorRightOfText = false) override; bool handleEvent(Ion::Events::Event event) override; - bool shouldFinishEditing(Ion::Events::Event event) override; // TODO REMOVE ? + // TODO: factorize with TextField (see TODO of EditableField) + bool shouldFinishEditing(Ion::Events::Event event) override; // Selection bool resetSelection() { return m_contentView.resetSelection(); } diff --git a/escher/include/escher/text_area.h b/escher/include/escher/text_area.h index 4b1f36c9e..640511dc1 100644 --- a/escher/include/escher/text_area.h +++ b/escher/include/escher/text_area.h @@ -7,6 +7,8 @@ #include #include +// See TODO in EditableField + class TextArea : public TextInput, public InputEventHandler { public: static constexpr int k_indentationSpaces = 2; diff --git a/escher/include/escher/text_field.h b/escher/include/escher/text_field.h index a3078c4b6..1fab85d6b 100644 --- a/escher/include/escher/text_field.h +++ b/escher/include/escher/text_field.h @@ -6,6 +6,8 @@ #include #include +// See TODO in EditableField + /* TODO: TextField currently uses using 2 buffers: * - one to keep the displayed text * - another one to edit the text while keeping the previous text in the first @@ -36,6 +38,7 @@ public: return ContentView::k_maxBufferSize; } void scrollToCursor() override; + // TODO: factorize with TextField (see TODO of EditableField) bool shouldFinishEditing(Ion::Events::Event event) override; const KDFont * font() const { return m_contentView.font(); } protected: diff --git a/escher/include/escher/text_input.h b/escher/include/escher/text_input.h index fd961cd71..82bb60106 100644 --- a/escher/include/escher/text_input.h +++ b/escher/include/escher/text_input.h @@ -6,6 +6,8 @@ #include #include +// See TODO in EditableField + class TextInput : public ScrollableView, public ScrollViewDataSource { public: TextInput(Responder * parentResponder, View * contentView) : ScrollableView(parentResponder, contentView, this) {}