slider新增值修改的回调, 将重新绘制移到回调中

This commit is contained in:
2024-03-28 21:17:03 +08:00
parent f84313b83d
commit 1a2c07159d

View File

@@ -25,10 +25,25 @@ public:
value = (T)0.5;
_internal_value = *value;
_mode = in_mode;
value.subscribe([this](T in_value) {
_value_changed = value.subscribe([this](T in_value) {
_internal_value = in_value;
request_redraw();
});
_max_value_changed = max_value.subscribe([this](T in_value) {
if (_internal_value > in_value) {
_internal_value = in_value;
value = _internal_value;
}
request_redraw();
});
_min_value_changed = min_value.subscribe([this](T in_value) {
if (_internal_value < in_value) {
_internal_value = in_value;
value = _internal_value;
}
request_redraw();
});
}
hi::box_constraints update_constraints() noexcept override {
@@ -111,7 +126,6 @@ public:
}
_internal_value = std::clamp<T>(static_cast<T>(_internal_value), *min_value, *max_value);
value = _internal_value;
request_redraw();
return true;
}
break;
@@ -123,7 +137,6 @@ public:
_internal_value += event.mouse().wheel_delta.y() * 0.001f;
_internal_value = std::clamp<T>((T)_internal_value, *min_value, *max_value);
value = _internal_value;
request_redraw();
return true;
}
break;
@@ -171,4 +184,7 @@ private:
float _down_value = 0;
bool _tiny_controls = false;
hi::box_constraints _constraints;
hi::callback<void(T)> _value_changed;
hi::callback<void(T)> _max_value_changed;
hi::callback<void(T)> _min_value_changed;
};