From 96d802238415f4de147549d43de6ba09ed0bc9f2 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sat, 23 Apr 2022 10:04:54 +0200 Subject: [PATCH] FormGroup::Line: split parent and form group --- radio/src/thirdparty/libopenui/src/form.cpp | 31 ++++++++++++++------- radio/src/thirdparty/libopenui/src/form.h | 6 +++- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/radio/src/thirdparty/libopenui/src/form.cpp b/radio/src/thirdparty/libopenui/src/form.cpp index a2c7c2715..daa2706af 100644 --- a/radio/src/thirdparty/libopenui/src/form.cpp +++ b/radio/src/thirdparty/libopenui/src/form.cpp @@ -111,13 +111,25 @@ void FormField::setFocus(uint8_t flag, Window * from) FormGroup::Line::Line(FormGroup* parent, lv_obj_t* obj, FlexGridLayout* layout) : - Window(parent, obj), layout(layout) + Window(parent, obj), layout(layout), group(parent) +{ + construct(); +} + +FormGroup::Line::Line(Window* parent, lv_obj_t* obj, FlexGridLayout* layout, + FormGroup* group) : + Window(parent, obj), layout(layout), group(group) +{ + construct(); +} + +void FormGroup::Line::construct() { // forward scroll and focus windowFlags |= FORWARD_SCROLL | FORM_FORWARD_FOCUS; if (layout) { - layout->apply(obj); + layout->apply(lvobj); } lv_obj_set_height(lvobj, LV_SIZE_CONTENT); @@ -135,8 +147,7 @@ void FormGroup::Line::addChild(Window* window, bool front) void FormGroup::Line::addField(FormField *field, bool front) { - auto form = static_cast(parent); - form->addField(field, front); + group->addField(field, front); } void FormGroup::Line::removeField(FormField *field) @@ -257,12 +268,12 @@ void FormGroup::addField(FormField * field, bool front) } } - if (!focusWindow && !(field->getWindowFlags() & FORM_FORWARD_FOCUS)) { - field->setFocus(SET_FOCUS_DEFAULT); - } - else if (focusWindow == this && (windowFlags & FORM_FORWARD_FOCUS)) { - field->setFocus(SET_FOCUS_DEFAULT); - } + // if (!focusWindow && !(field->getWindowFlags() & FORM_FORWARD_FOCUS)) { + // field->setFocus(SET_FOCUS_DEFAULT); + // } + // else if (focusWindow == this && (windowFlags & FORM_FORWARD_FOCUS)) { + // field->setFocus(SET_FOCUS_DEFAULT); + // } } void FormGroup::setFocus(uint8_t flag, Window * from) diff --git a/radio/src/thirdparty/libopenui/src/form.h b/radio/src/thirdparty/libopenui/src/form.h index 9e5df9b26..4ef75f583 100644 --- a/radio/src/thirdparty/libopenui/src/form.h +++ b/radio/src/thirdparty/libopenui/src/form.h @@ -128,9 +128,13 @@ class FormGroup : public FormField, public FieldContainer class Line : public Window, public FieldContainer { FlexGridLayout* layout; + FormGroup* group; + void construct(); + public: - Line(FormGroup *parent, lv_obj_t *lvobj, FlexGridLayout* layout); + Line(FormGroup *parent, lv_obj_t *obj, FlexGridLayout* layout); + Line(Window *parent, lv_obj_t *obj, FlexGridLayout* layout, FormGroup* group); protected: void addChild(Window* window, bool front = false) override;