summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/screenshot/src/main.rs5
-rw-r--r--widget/src/button.rs13
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
}