@@ -35,6 +35,7 @@ void GUISlider::SetMinValue(int minval)
3535 if (_minValue != minval)
3636 {
3737 _minValue = minval;
38+ _maxValue = std::max (_minValue, _maxValue);
3839 _value = Math::Clamp (_value, _minValue, _maxValue);
3940 MarkChanged ();
4041 }
@@ -45,6 +46,7 @@ void GUISlider::SetMaxValue(int maxval)
4546 if (_maxValue != maxval)
4647 {
4748 _maxValue = maxval;
49+ _minValue = std::min (_minValue, _maxValue);
4850 _value = Math::Clamp (_value, _minValue, _maxValue);
4951 MarkChanged ();
5052 }
@@ -122,11 +124,6 @@ void GUISlider::UpdateMetrics()
122124 assert (GUI::Context.Spriteset );
123125 SpriteCache &spriteset = *GUI::Context.Spriteset ;
124126
125- // Clamp value
126- // TODO: this is necessary here because some Slider fields are still public
127- if (_minValue >= _maxValue)
128- _maxValue = _minValue + 1 ;
129- _value = Math::Clamp (_value, _minValue, _maxValue);
130127 // Test if sprite is available; // TODO: return a placeholder from spriteset instead!
131128 const int handle_im = ((_handleImage > 0 ) && spriteset.DoesSpriteExist (_handleImage)) ? _handleImage : 0 ;
132129
@@ -329,6 +326,11 @@ void GUISlider::ReadFromFile(Stream *in, GuiVersion gui_version)
329326 _cachedHandle = Rect ();
330327 _handleRange = 0 ;
331328
329+ // Clamp value range, in case the data is wrong
330+ _maxValue = std::max (_minValue, _maxValue);
331+ _minValue = std::min (_minValue, _maxValue);
332+ _value = Math::Clamp (_value, _minValue, _maxValue);
333+
332334 // UpdateMetrics();
333335 // UpdateGraphicSpace(); // can't do here, because sprite infos may not be loaded yet
334336}
@@ -359,6 +361,11 @@ void GUISlider::ReadFromSavegame(Stream *in, GuiSvgVersion svg_ver)
359361 _cachedHandle = Rect ();
360362 _handleRange = 0 ;
361363
364+ // Clamp value range, in case the data is wrong
365+ _maxValue = std::max (_minValue, _maxValue);
366+ _minValue = std::min (_minValue, _maxValue);
367+ _value = Math::Clamp (_value, _minValue, _maxValue);
368+
362369 UpdateMetrics ();
363370 UpdateGraphicSpace ();
364371}
0 commit comments