slider新增值修改的回调, 将重新绘制移到回调中
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user