From 7d6d88113c7798810eb059c225bca6ea6f1cc60a Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 24 Feb 2021 16:00:44 +0100 Subject: [PATCH] Focus issue: 'else' missing + refactoring --- radio/src/thirdparty/libopenui/src/form.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/radio/src/thirdparty/libopenui/src/form.cpp b/radio/src/thirdparty/libopenui/src/form.cpp index 586a6c333..865a35252 100644 --- a/radio/src/thirdparty/libopenui/src/form.cpp +++ b/radio/src/thirdparty/libopenui/src/form.cpp @@ -106,27 +106,30 @@ void FormGroup::addField(FormField * field, bool front) if (field->getWindowFlags() & FORM_DETACHED) return; - if (!first) { - first = field; - last = field; - } if (front) { if (first) link(field, first); first = field; + if (!last) + last = field; } else { if (last) link(last, field); last = field; + if (!first) + first = field; } - if (previous && (windowFlags & FORM_FORWARD_FOCUS)) { + + if (windowFlags & FORM_FORWARD_FOCUS) { last->setNextField(this); - link(previous, first); + if (previous) + link(previous, first); } else if (WRAP_FORM_FIELDS_WITHIN_PAGE) { link(last, first); } + if (!focusWindow && !(field->getWindowFlags() & FORM_FORWARD_FOCUS)) { field->setFocus(SET_FOCUS_DEFAULT); }