number edit: install call back regardless of _getValue
This commit is contained in:
+6
-3
@@ -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;
|
||||
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user