1
0
mirror of https://github.com/godotengine/godot.git synced 2025-12-04 17:04:49 +00:00

Merge pull request #70834 from pattlebass/spinbox-doesnt-spin

Fix `Range`-derived nodes not redrawing after `set_value_no_signal`
This commit is contained in:
Rémi Verschelde
2023-04-12 17:01:11 +02:00
4 changed files with 35 additions and 11 deletions

View File

@@ -74,16 +74,26 @@ void Range::Shared::emit_changed(const char *p_what) {
}
}
void Range::Shared::redraw_owners() {
for (Range *E : owners) {
Range *r = E;
if (!r->is_inside_tree()) {
continue;
}
r->queue_redraw();
}
}
void Range::set_value(double p_val) {
double prev_val = shared->val;
set_value_no_signal(p_val);
_set_value_no_signal(p_val);
if (shared->val != prev_val) {
shared->emit_value_changed();
}
}
void Range::set_value_no_signal(double p_val) {
void Range::_set_value_no_signal(double p_val) {
if (shared->step > 0) {
p_val = Math::round((p_val - shared->min) / shared->step) * shared->step + shared->min;
}
@@ -107,6 +117,15 @@ void Range::set_value_no_signal(double p_val) {
shared->val = p_val;
}
void Range::set_value_no_signal(double p_val) {
double prev_val = shared->val;
_set_value_no_signal(p_val);
if (shared->val != prev_val) {
shared->redraw_owners();
}
}
void Range::set_min(double p_min) {
if (shared->min == p_min) {
return;