Skip to content

Commit 2d39bab

Browse files
committed
Cleanup stepper widget
1 parent 5731f1c commit 2d39bab

File tree

2 files changed

+29
-30
lines changed

2 files changed

+29
-30
lines changed

druid/examples/switch.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,15 @@ fn build_widget() -> impl Widget<DemoState> {
3030
row.add_child(Padding::new(5.0, switch_label), 0.0);
3131
row.add_child(Padding::new(5.0, switch), 0.0);
3232

33-
3433
let label_stepper = LensWrap::new(
35-
Stepper::new(0.0, 10.0, 1.0, true, |_ctx, _data, _env| {}),
34+
Stepper::new(0.0, 10.0, 0.25, true, |_ctx, _data, _env| {}),
3635
lenses::demo_state::stepper_value,
3736
);
3837

3938
let mut stepper_row = Row::new();
4039

4140
let label = DynLabel::new(|data: &DemoState, _env| {
42-
format!("Stepper value: {0:.0}", data.stepper_value)
41+
format!("Stepper value: {0:.2}", data.stepper_value)
4342
});
4443

4544
stepper_row.add_child(Padding::new(5.0, label), 0.0);

druid/src/widget/stepper.rs

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,19 @@
1515
//! A stepper widget.
1616
1717
use crate::{
18-
BaseState, BoxConstraints, Data, Env, Event, EventCtx, LayoutCtx, PaintCtx, Size, TimerToken,
18+
BaseState, BoxConstraints, Env, Event, EventCtx, LayoutCtx, PaintCtx, Size, TimerToken,
1919
UpdateCtx, Widget,
2020
};
2121
use std::time::{Duration, Instant};
2222

2323
use crate::kurbo::{BezPath, Rect, RoundedRect};
24-
use crate::piet::{
25-
FontBuilder, LinearGradient, RenderContext, Text, TextLayout, TextLayoutBuilder, UnitPoint,
26-
};
24+
use crate::piet::{LinearGradient, RenderContext, UnitPoint};
2725

2826
use crate::theme;
29-
use crate::widget::{Align, Label, LabelText, SizedBox};
27+
use crate::widget::Align;
3028
use crate::Point;
3129

32-
/// A stepper.
30+
/// A stepper widget for step-wise increasing and decreasing a value.
3331
pub struct Stepper {
3432
max: f64,
3533
min: f64,
@@ -67,6 +65,7 @@ impl Stepper {
6765
}
6866

6967
fn change_value(&mut self, ctx: &mut EventCtx, data: &mut f64, env: &Env) {
68+
// increase/decrease value depending on which button is currently active
7069
let delta = if self.increase_active {
7170
self.step
7271
} else if self.decrease_active {
@@ -79,6 +78,7 @@ impl Stepper {
7978
*data = (*data + delta).min(self.min).max(self.max);
8079

8180
if old_data != *data {
81+
// callback
8282
(self.value_changed)(ctx, data, env);
8383
} else {
8484
if self.wrap {
@@ -93,7 +93,7 @@ impl Stepper {
9393
}
9494

9595
impl Widget<f64> for Stepper {
96-
fn paint(&mut self, paint_ctx: &mut PaintCtx, base_state: &BaseState, data: &f64, env: &Env) {
96+
fn paint(&mut self, paint_ctx: &mut PaintCtx, base_state: &BaseState, _data: &f64, env: &Env) {
9797
let rounded_rect =
9898
RoundedRect::from_origin_size(Point::ORIGIN, base_state.size().to_vec2(), 4.);
9999

@@ -105,12 +105,12 @@ impl Widget<f64> for Stepper {
105105
paint_ctx.clip(rounded_rect);
106106

107107
// draw buttons for increase/decrease
108-
let mut increase_button_origin = Point::ORIGIN;
108+
let increase_button_origin = Point::ORIGIN;
109109
let mut decrease_button_origin = Point::ORIGIN;
110110
decrease_button_origin.y += height / 2.;
111111

112-
let increase_rect = Rect::from_origin_size(increase_button_origin, button_size);
113-
let decrease_rect = Rect::from_origin_size(decrease_button_origin, button_size);
112+
let increase_button_rect = Rect::from_origin_size(increase_button_origin, button_size);
113+
let decrease_button_rect = Rect::from_origin_size(decrease_button_origin, button_size);
114114

115115
let active_gradient = LinearGradient::new(
116116
UnitPoint::TOP,
@@ -126,31 +126,31 @@ impl Widget<f64> for Stepper {
126126

127127
// draw buttons that are currently triggered as active
128128
if self.increase_active {
129-
paint_ctx.fill(increase_rect, &active_gradient);
129+
paint_ctx.fill(increase_button_rect, &active_gradient);
130130
} else {
131-
paint_ctx.fill(increase_rect, &inactive_gradient);
131+
paint_ctx.fill(increase_button_rect, &inactive_gradient);
132132
};
133133

134134
if self.decrease_active {
135-
paint_ctx.fill(decrease_rect, &active_gradient);
135+
paint_ctx.fill(decrease_button_rect, &active_gradient);
136136
} else {
137-
paint_ctx.fill(decrease_rect, &inactive_gradient);
137+
paint_ctx.fill(decrease_button_rect, &inactive_gradient);
138138
};
139139

140140
// draw up and down triangles
141-
let mut increase_arrow = BezPath::new();
142-
increase_arrow.move_to(Point::new(4., height / 2. - 4.));
143-
increase_arrow.line_to(Point::new(width - 4., height / 2. - 4.));
144-
increase_arrow.line_to(Point::new(width / 2., 4.));
145-
increase_arrow.close_path();
146-
paint_ctx.fill(increase_arrow, &env.get(theme::LABEL_COLOR));
147-
148-
let mut decrease_arrow = BezPath::new();
149-
decrease_arrow.move_to(Point::new(4., height / 2. + 4.));
150-
decrease_arrow.line_to(Point::new(width - 4., height / 2. + 4.));
151-
decrease_arrow.line_to(Point::new(width / 2., height - 4.));
152-
decrease_arrow.close_path();
153-
paint_ctx.fill(decrease_arrow, &env.get(theme::LABEL_COLOR));
141+
let mut increase_button_arrow = BezPath::new();
142+
increase_button_arrow.move_to(Point::new(4., height / 2. - 4.));
143+
increase_button_arrow.line_to(Point::new(width - 4., height / 2. - 4.));
144+
increase_button_arrow.line_to(Point::new(width / 2., 4.));
145+
increase_button_arrow.close_path();
146+
paint_ctx.fill(increase_button_arrow, &env.get(theme::LABEL_COLOR));
147+
148+
let mut decrease_button_arrow = BezPath::new();
149+
decrease_button_arrow.move_to(Point::new(4., height / 2. + 4.));
150+
decrease_button_arrow.line_to(Point::new(width - 4., height / 2. + 4.));
151+
decrease_button_arrow.line_to(Point::new(width / 2., height - 4.));
152+
decrease_button_arrow.close_path();
153+
paint_ctx.fill(decrease_button_arrow, &env.get(theme::LABEL_COLOR));
154154
}
155155

156156
fn layout(

0 commit comments

Comments
 (0)