[FormGroup] added removeField() to properly remove fields
This commit is contained in:
+21
@@ -103,6 +103,27 @@ void FormField::paint(BitmapBuffer * dc)
|
||||
}
|
||||
}
|
||||
|
||||
void FormGroup::removeField(FormField * field)
|
||||
{
|
||||
FormField* prev = field->getPreviousField();
|
||||
FormField* next = field->getNextField();
|
||||
|
||||
if (prev) { prev->setNextField(next); }
|
||||
if (next) { next->setPreviousField(prev); }
|
||||
|
||||
if (first == field) {
|
||||
if (prev && (prev != field)) first = prev;
|
||||
else if (next && (next != field)) first = next;
|
||||
else first = nullptr;
|
||||
}
|
||||
|
||||
if (last == field) {
|
||||
if (next && (next != field)) last = next;
|
||||
else if (prev && (prev != field)) last = prev;
|
||||
else last = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void FormGroup::addField(FormField * field, bool front)
|
||||
{
|
||||
if (field->getWindowFlags() & FORM_DETACHED)
|
||||
|
||||
+3
-1
@@ -133,7 +133,9 @@ class FormGroup: public FormField
|
||||
|
||||
void setFocus(uint8_t flag = SET_FOCUS_DEFAULT, Window * from = nullptr) override;
|
||||
|
||||
virtual void addField(FormField * field, bool front = false); // NOLINT(google-default-arguments)
|
||||
virtual void addField(FormField * field, bool front = false);
|
||||
|
||||
virtual void removeField(FormField * field);
|
||||
|
||||
void setFirstField(FormField * field)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user