Răsfoiți Sursa

Merge pull request #6833 from Elinvention/master

Make the step property useful for sliders
Rémi Verschelde 8 ani în urmă
părinte
comite
34f0ce1168
1 a modificat fișierele cu 13 adăugiri și 4 ștergeri
  1. 13 4
      scene/gui/range.cpp

+ 13 - 4
scene/gui/range.cpp

@@ -136,16 +136,25 @@ double Range::get_page() const {
 }
 }
 
 
 void Range::set_unit_value(double p_value) {
 void Range::set_unit_value(double p_value) {
+
+	double v;
+
 	if (shared->exp_unit_value && get_min()>0) {
 	if (shared->exp_unit_value && get_min()>0) {
 
 
 		double exp_min = Math::log(get_min())/Math::log(2);
 		double exp_min = Math::log(get_min())/Math::log(2);
 		double exp_max = Math::log(get_max())/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 {
 	} 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 {
 double Range::get_unit_value() const {