@@ -1590,20 +1590,27 @@ void Slider::Clamp() {
15901590
15911591void Slider::Draw (UIContext &dc) {
15921592 bool focus = HasFocus ();
1593- uint32_t linecolor = dc.theme ->itemStyle .fgColor ;
1594- Style knobStyle = (down_ || focus) ? dc.theme ->itemStyle : dc.theme ->popupStyle ;
1593+ uint32_t sliderColor;
1594+
1595+ if (down_) {
1596+ sliderColor = popupStyle_ ? dc.theme ->popupSliderFocusedColor : dc.theme ->itemDownStyle .fgColor ;
1597+ } else if (focus) {
1598+ sliderColor = popupStyle_ ? dc.theme ->popupSliderFocusedColor : dc.theme ->itemFocusedStyle .fgColor ;
1599+ } else {
1600+ sliderColor = popupStyle_ ? dc.theme ->popupSliderColor : dc.theme ->itemStyle .fgColor ;
1601+ }
15951602
15961603 float knobX = ((float )(*value_) - minValue_) / (maxValue_ - minValue_) * (bounds_.w - paddingLeft_ - paddingRight_) + (bounds_.x + paddingLeft_);
1597- dc.FillRect (Drawable (linecolor ), Bounds (bounds_.x + paddingLeft_, bounds_.centerY () - 2 , knobX - (bounds_.x + paddingLeft_), 4 ));
1604+ dc.FillRect (Drawable (sliderColor ), Bounds (bounds_.x + paddingLeft_, bounds_.centerY () - 2 , knobX - (bounds_.x + paddingLeft_), 4 ));
15981605 dc.FillRect (Drawable (0xFF808080 ), Bounds (knobX, bounds_.centerY () - 2 , (bounds_.x + bounds_.w - paddingRight_ - knobX), 4 ));
1599- dc.Draw ()->DrawImage (dc.theme ->sliderKnob , knobX, bounds_.centerY (), 1 .0f , knobStyle. fgColor , ALIGN_CENTER);
1606+ dc.Draw ()->DrawImage (dc.theme ->sliderKnob , knobX, bounds_.centerY (), 1 .0f , sliderColor , ALIGN_CENTER);
16001607 char temp[64 ];
16011608 if (showPercent_)
16021609 snprintf (temp, sizeof (temp), " %d%%" , *value_);
16031610 else
16041611 snprintf (temp, sizeof (temp), " %d" , *value_);
16051612 dc.SetFontStyle (dc.theme ->uiFont );
1606- dc.DrawText (temp, bounds_.x2 () - 22 , bounds_.centerY (), dc. theme -> popupStyle . fgColor , ALIGN_CENTER | FLAG_DYNAMIC_ASCII);
1613+ dc.DrawText (temp, bounds_.x2 () - 22 , bounds_.centerY (), sliderColor , ALIGN_CENTER | FLAG_DYNAMIC_ASCII);
16071614}
16081615
16091616std::string Slider::DescribeText () const {
@@ -1743,17 +1750,24 @@ void SliderFloat::Clamp() {
17431750
17441751void SliderFloat::Draw (UIContext &dc) {
17451752 bool focus = HasFocus ();
1746- uint32_t linecolor = dc.theme ->itemStyle .fgColor ;
1747- Style knobStyle = (down_ || focus) ? dc.theme ->itemStyle : dc.theme ->popupStyle ;
1753+ uint32_t sliderColor;
1754+
1755+ if (down_) {
1756+ sliderColor = popupStyle_ ? dc.theme ->popupSliderFocusedColor : dc.theme ->itemDownStyle .fgColor ;
1757+ } else if (focus) {
1758+ sliderColor = popupStyle_ ? dc.theme ->popupSliderFocusedColor : dc.theme ->itemFocusedStyle .fgColor ;
1759+ } else {
1760+ sliderColor = popupStyle_ ? dc.theme ->popupSliderColor : dc.theme ->itemStyle .fgColor ;
1761+ }
17481762
17491763 float knobX = (*value_ - minValue_) / (maxValue_ - minValue_) * (bounds_.w - paddingLeft_ - paddingRight_) + (bounds_.x + paddingLeft_);
1750- dc.FillRect (Drawable (linecolor ), Bounds (bounds_.x + paddingLeft_, bounds_.centerY () - 2 , knobX - (bounds_.x + paddingLeft_), 4 ));
1764+ dc.FillRect (Drawable (sliderColor ), Bounds (bounds_.x + paddingLeft_, bounds_.centerY () - 2 , knobX - (bounds_.x + paddingLeft_), 4 ));
17511765 dc.FillRect (Drawable (0xFF808080 ), Bounds (knobX, bounds_.centerY () - 2 , (bounds_.x + bounds_.w - paddingRight_ - knobX), 4 ));
1752- dc.Draw ()->DrawImage (dc.theme ->sliderKnob , knobX, bounds_.centerY (), 1 .0f , knobStyle. fgColor , ALIGN_CENTER);
1766+ dc.Draw ()->DrawImage (dc.theme ->sliderKnob , knobX, bounds_.centerY (), 1 .0f , sliderColor , ALIGN_CENTER);
17531767 char temp[64 ];
17541768 snprintf (temp, sizeof (temp), " %0.2f" , *value_);
17551769 dc.SetFontStyle (dc.theme ->uiFont );
1756- dc.DrawText (temp, bounds_.x2 () - 22 , bounds_.centerY (), dc. theme -> popupStyle . fgColor , ALIGN_CENTER);
1770+ dc.DrawText (temp, bounds_.x2 () - 22 , bounds_.centerY (), sliderColor , ALIGN_CENTER);
17571771}
17581772
17591773std::string SliderFloat::DescribeText () const {
0 commit comments