From 9c4a0d78a953abfa9e470cef70bcdfb404be136a Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Mon, 1 Aug 2022 11:22:00 +0200 Subject: [PATCH] number edit: install call back regardless of _getValue --- radio/src/thirdparty/libopenui/src/basenumberedit.h | 9 ++++++--- radio/src/thirdparty/libopenui/src/numberedit.cpp | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) 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); } }