summaryrefslogtreecommitdiff
path: root/scene/gui/range.cpp
diff options
context:
space:
mode:
authorElia Argentieri <elia.argentieri@openmailbox.org>2016-10-15 18:20:27 +0200
committerElia Argentieri <elia.argentieri@openmailbox.org>2016-10-15 18:22:48 +0200
commit0955371447181a0fc20eb68dc6bc5aae67b73d0d (patch)
tree374e1b07f82dbf4eed28c0a2af4a3ec231b134a1 /scene/gui/range.cpp
parenteb8d19ba740c11acf0f26080405fc5cd827a2d41 (diff)
Make the step property useful for sliders as described in #5773
Diffstat (limited to 'scene/gui/range.cpp')
-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 e056c55f71..ed58c4eb49 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 {