diff options
| author | Elia Argentieri | 2016-10-15 18:20:27 +0200 |
|---|---|---|
| committer | Rémi Verschelde | 2016-11-15 08:36:18 +0100 |
| commit | e3dc319f78c16b6f24081ae28c868242fcaed4ed (patch) | |
| tree | 44cc60e88451b84a3ed0517026eb8406406894ff /scene/gui/range.cpp | |
| parent | 221346521c08337077b7f41454a6f4e6fae932e2 (diff) | |
| download | godot-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.cpp | 17 |
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 { |
