From 5e2b3d4a51be97c77124dcd60e5ee3bed1b19826 Mon Sep 17 00:00:00 2001 From: Jonatan Pettersson Date: Wed, 20 Sep 2023 20:56:50 +0200 Subject: Enhance `Slider` and `VerticalSlider` functionality * Add optional default behavior * Add a `default` field * Add a `default()` method to set the `default` field * A double-click, ctrl-click or command-click will set the slider to the default value * Add optional fine-grained control * Add an optional `step_fine` field * Add a `step_fine()` method to set the `step_fine` field * Use `step_fine` in place of `step` while shift is pressed * Add increment/decrement via up/down keys * Update `Slider` and `VerticalSlider` examples --- examples/slider/src/main.rs | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'examples/slider/src') diff --git a/examples/slider/src/main.rs b/examples/slider/src/main.rs index e83804c2..e9820aed 100644 --- a/examples/slider/src/main.rs +++ b/examples/slider/src/main.rs @@ -12,13 +12,21 @@ pub enum Message { pub struct Slider { slider_value: u8, + slider_default: u8, + slider_step: u8, + slider_step_fine: u8, } impl Sandbox for Slider { type Message = Message; fn new() -> Slider { - Slider { slider_value: 50 } + Slider { + slider_value: 50, + slider_default: 50, + slider_step: 5, + slider_step_fine: 1, + } } fn title(&self) -> String { @@ -35,14 +43,25 @@ impl Sandbox for Slider { fn view(&self) -> Element { let value = self.slider_value; + let default = self.slider_default; + let step = self.slider_step; + let step_fine = self.slider_step_fine; - let h_slider = - container(slider(0..=100, value, Message::SliderChanged)) - .width(250); + let h_slider = container( + slider(0..=100, value, Message::SliderChanged) + .default(default) + .step(step) + .step_fine(step_fine), + ) + .width(250); - let v_slider = - container(vertical_slider(0..=100, value, Message::SliderChanged)) - .height(200); + let v_slider = container( + vertical_slider(0..=100, value, Message::SliderChanged) + .default(default) + .step(step) + .step_fine(step_fine), + ) + .height(200); let text = text(format!("{value}")); -- cgit