1414
1515//! A slider widget.
1616
17- use crate :: kurbo:: { Circle , Point , Rect , RoundedRect , Shape , Size } ;
17+ use crate :: kurbo:: { Circle , Point , Rect , Shape , Size } ;
1818use crate :: theme;
1919use crate :: {
2020 BoxConstraints , Env , Event , EventCtx , LayoutCtx , LifeCycle , LifeCycleCtx , LinearGradient ,
@@ -138,13 +138,16 @@ impl Widget<f64> for Slider {
138138 let rect = Rect :: from_origin_size ( Point :: ORIGIN , ctx. size ( ) ) ;
139139 let knob_size = env. get ( theme:: BASIC_WIDGET_HEIGHT ) ;
140140 let track_thickness = 4. ;
141+ let border_width = 2. ;
142+ let knob_stroke_width = 2. ;
141143
142144 //Paint the background
143145 let background_width = rect. width ( ) - knob_size;
144146 let background_origin = Point :: new ( knob_size / 2. , ( knob_size - track_thickness) / 2. ) ;
145147 let background_size = Size :: new ( background_width, track_thickness) ;
146- let background_rect =
147- RoundedRect :: from_origin_size ( background_origin, background_size. to_vec2 ( ) , 2. ) ;
148+ let background_rect = Rect :: from_origin_size ( background_origin, background_size)
149+ . inset ( -border_width / 2. )
150+ . to_rounded_rect ( 2. ) ;
148151
149152 let background_gradient = LinearGradient :: new (
150153 UnitPoint :: TOP ,
@@ -155,7 +158,7 @@ impl Widget<f64> for Slider {
155158 ) ,
156159 ) ;
157160
158- ctx. stroke ( background_rect, & env. get ( theme:: BORDER_DARK ) , 2.0 ) ;
161+ ctx. stroke ( background_rect, & env. get ( theme:: BORDER_DARK ) , border_width ) ;
159162
160163 ctx. fill ( background_rect, & background_gradient) ;
161164
@@ -165,7 +168,7 @@ impl Widget<f64> for Slider {
165168
166169 let knob_position = ( rect. width ( ) - knob_size) * clamped + knob_size / 2. ;
167170 self . knob_pos = Point :: new ( knob_position, knob_size / 2. ) ;
168- let knob_circle = Circle :: new ( self . knob_pos , knob_size / 2. ) ;
171+ let knob_circle = Circle :: new ( self . knob_pos , ( knob_size - knob_stroke_width ) / 2. ) ;
169172
170173 let normal_knob_gradient = LinearGradient :: new (
171174 UnitPoint :: TOP ,
@@ -197,7 +200,7 @@ impl Widget<f64> for Slider {
197200 env. get ( theme:: FOREGROUND_DARK )
198201 } ;
199202
200- ctx. stroke ( knob_circle, & border_color, 2. ) ;
203+ ctx. stroke ( knob_circle, & border_color, knob_stroke_width ) ;
201204
202205 //Actually paint the knob
203206 ctx. fill ( knob_circle, & knob_gradient) ;
0 commit comments