diff options
| -rw-r--r-- | examples/screenshot/src/main.rs | 5 | ||||
| -rw-r--r-- | widget/src/button.rs | 13 | 
2 files changed, 14 insertions, 4 deletions
| diff --git a/examples/screenshot/src/main.rs b/examples/screenshot/src/main.rs index 7d53b3b2..be39f829 100644 --- a/examples/screenshot/src/main.rs +++ b/examples/screenshot/src/main.rs @@ -79,12 +79,13 @@ impl Application for Example {              }              Message::Png => {                  if let Some(screenshot) = &self.screenshot { +                    self.png_saving = true; +                      return Command::perform(                          save_to_png(screenshot.clone()),                          Message::PngSaved,                      );                  } -                self.png_saving = true;              }              Message::PngSaved(res) => {                  self.png_saving = false; @@ -185,7 +186,7 @@ impl Application for Example {              button("Save to png")                  .style(Button::Secondary)                  .padding([10, 20, 10, 20]) -                .on_press(Message::Png) +                .on_press_maybe(self.screenshot.is_some().then(|| Message::Png))          } else {              button("Saving...")                  .style(Button::Secondary) diff --git a/widget/src/button.rs b/widget/src/button.rs index 70fed1d5..c656142c 100644 --- a/widget/src/button.rs +++ b/widget/src/button.rs @@ -102,8 +102,17 @@ where      /// Sets the message that will be produced when the [`Button`] is pressed.      ///      /// Unless `on_press` is called, the [`Button`] will be disabled. -    pub fn on_press(mut self, msg: Message) -> Self { -        self.on_press = Some(msg); +    pub fn on_press(mut self, on_press: Message) -> Self { +        self.on_press = Some(on_press); +        self +    } + +    /// Sets the message that will be produced when the [`Button`] is pressed, +    /// if `Some`. +    /// +    /// If `None`, the [`Button`] will be disabled. +    pub fn on_press_maybe(mut self, on_press: Option<Message>) -> Self { +        self.on_press = on_press;          self      } | 
