Introduce on_press_maybe helper for Button

This commit is contained in:
Héctor Ramón Jiménez 2023-06-06 16:18:20 +02:00
parent 5324928044
commit 5b5000e3ae
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
2 changed files with 14 additions and 4 deletions

View file

@ -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)

View file

@ -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
}