Skip to content

Commit ed28019

Browse files
author
philmoz
committed
Fix focus issues with number edit.
1 parent 1e736f0 commit ed28019

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

radio/src/thirdparty/libopenui/src/numberedit.cpp

+10-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ class NumberArea : public FormField
4545

4646
lv_obj_add_event_cb(lvobj, NumberArea::numberedit_cb, LV_EVENT_KEY, this);
4747

48+
setFocusHandler([=](bool focus) {
49+
if (!focus && editMode) {
50+
setEditMode(false);
51+
hide();
52+
lv_obj_clear_state(parent->getLvObj(), LV_STATE_FOCUSED);
53+
}
54+
});
55+
4856
update();
4957
}
5058

@@ -317,7 +325,8 @@ void NumberEdit::openEdit()
317325
this->vmin, this->vmax, _getValue, _setValue, textFlags);
318326
edit->setChangeHandler([=]() {
319327
update();
320-
lv_group_focus_obj(lvobj);
328+
if (edit->hasFocus())
329+
lv_group_focus_obj(lvobj);
321330
edit->hide();
322331
});
323332
edit->setCancelHandler([=]() {

radio/src/thirdparty/libopenui/src/window.cpp

+14-10
Original file line numberDiff line numberDiff line change
@@ -369,21 +369,25 @@ FormLine *Window::newLine(FlexGridLayout &layout)
369369

370370
void Window::show(bool visible)
371371
{
372-
if (lv_obj_has_flag(lvobj, LV_OBJ_FLAG_HIDDEN) == visible) {
373-
if (visible)
374-
lv_obj_clear_flag(lvobj, LV_OBJ_FLAG_HIDDEN);
375-
else
376-
lv_obj_add_flag(lvobj, LV_OBJ_FLAG_HIDDEN);
372+
if (!_deleted && lvobj) {
373+
if (lv_obj_has_flag(lvobj, LV_OBJ_FLAG_HIDDEN) == visible) {
374+
if (visible)
375+
lv_obj_clear_flag(lvobj, LV_OBJ_FLAG_HIDDEN);
376+
else
377+
lv_obj_add_flag(lvobj, LV_OBJ_FLAG_HIDDEN);
378+
}
377379
}
378380
}
379381

380382
void Window::enable(bool enabled)
381383
{
382-
if (lv_obj_has_state(lvobj, LV_STATE_DISABLED) == enabled) {
383-
if (enabled)
384-
lv_obj_clear_state(lvobj, LV_STATE_DISABLED);
385-
else
386-
lv_obj_add_state(lvobj, LV_STATE_DISABLED);
384+
if (!_deleted && lvobj) {
385+
if (lv_obj_has_state(lvobj, LV_STATE_DISABLED) == enabled) {
386+
if (enabled)
387+
lv_obj_clear_state(lvobj, LV_STATE_DISABLED);
388+
else
389+
lv_obj_add_state(lvobj, LV_STATE_DISABLED);
390+
}
387391
}
388392
}
389393

0 commit comments

Comments
 (0)