diff --git a/radio/src/thirdparty/libopenui/src/basenumberedit.h b/radio/src/thirdparty/libopenui/src/basenumberedit.h index 976185d18..375b1ecb6 100644 --- a/radio/src/thirdparty/libopenui/src/basenumberedit.h +++ b/radio/src/thirdparty/libopenui/src/basenumberedit.h @@ -139,7 +139,9 @@ class BaseNumberEdit: public FormField int32_t getValue() const { - return (editMode && !instantChange) ? currentValue : _getValue(); + return (editMode && !instantChange) ? currentValue + : _getValue != nullptr ? _getValue() + : 0; } void setEditMode(bool newEditMode) override @@ -148,10 +150,10 @@ class BaseNumberEdit: public FormField FormField::setEditMode(newEditMode); if (!instantChange) { if (!previousEditMode && newEditMode) { - currentValue = _getValue(); + if (_getValue != nullptr) currentValue = _getValue(); } else if (previousEditMode && !newEditMode) { - _setValue(currentValue); + if (_setValue != nullptr) _setValue(currentValue); } } } @@ -164,6 +166,7 @@ class BaseNumberEdit: public FormField virtual void update() { + if (_getValue == nullptr) return; auto newValue = _getValue(); if (newValue != currentValue) { currentValue = newValue; diff --git a/radio/src/thirdparty/libopenui/src/numberedit.cpp b/radio/src/thirdparty/libopenui/src/numberedit.cpp index 521e7a75c..d2f8e092c 100644 --- a/radio/src/thirdparty/libopenui/src/numberedit.cpp +++ b/radio/src/thirdparty/libopenui/src/numberedit.cpp @@ -49,11 +49,11 @@ NumberEdit::NumberEdit(Window* parent, const rect_t& rect, int vmin, int vmax, lv_obj_set_scrollbar_mode(lvobj, LV_SCROLLBAR_MODE_OFF); lv_textarea_set_password_mode(lvobj, false); lv_textarea_set_one_line(lvobj, true); + lv_obj_add_event_cb(lvobj, numberedit_cb, LV_EVENT_KEY, this); if (_getValue) { auto value = _getValue(); this->setValue(value); - lv_obj_add_event_cb(lvobj, numberedit_cb, LV_EVENT_KEY, this); } }