aboutsummaryrefslogtreecommitdiff
path: root/scene/gui/range.cpp
diff options
context:
space:
mode:
authorElia Argentieri2016-10-15 18:20:27 +0200
committerRémi Verschelde2016-11-15 08:36:18 +0100
commite3dc319f78c16b6f24081ae28c868242fcaed4ed (patch)
tree44cc60e88451b84a3ed0517026eb8406406894ff /scene/gui/range.cpp
parent221346521c08337077b7f41454a6f4e6fae932e2 (diff)
downloadgodot-e3dc319f78c16b6f24081ae28c868242fcaed4ed.tar.gz
godot-e3dc319f78c16b6f24081ae28c868242fcaed4ed.tar.zst
godot-e3dc319f78c16b6f24081ae28c868242fcaed4ed.zip
Make the step property useful for sliders as described in #5773
(cherry picked from commit 0955371447181a0fc20eb68dc6bc5aae67b73d0d)
Diffstat (limited to '')
-rw-r--r--scene/gui/range.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/scene/gui/range.cpp b/scene/gui/range.cpp
index e056c55f7..ed58c4eb4 100644
--- a/scene/gui/range.cpp
+++ b/scene/gui/range.cpp
@@ -136,16 +136,25 @@ double Range::get_page() const {
}
void Range::set_unit_value(double p_value) {
+
+ double v;
+
if (shared->exp_unit_value && get_min()>0) {
double exp_min = Math::log(get_min())/Math::log(2);
double exp_max = Math::log(get_max())/Math::log(2);
- double v = Math::pow(2,exp_min+(exp_max-exp_min)*p_value);
-
- set_val( v );
+ v = Math::pow(2,exp_min+(exp_max-exp_min)*p_value);
} else {
- set_val( (get_max() - get_min()) * p_value + get_min() );
+
+ double percent = (get_max() - get_min()) * p_value;
+ if (get_step() > 0) {
+ double steps = round(percent / get_step());
+ v = steps * get_step() + get_min();
+ } else {
+ v = percent + get_min();
+ }
}
+ set_val( v );
}
double Range::get_unit_value() const {