diff options
author | 2021-06-10 19:12:11 +0700 | |
---|---|---|
committer | 2021-06-10 19:12:11 +0700 | |
commit | e68da229b384fbe78514dab0b13c8eb4637f4f5d (patch) | |
tree | 69da0989b0b6d433d697dc2f8560dc12cb2fbf18 | |
parent | f6ff87bb8f47b60672dcffbdd3a4d0e83cfb748f (diff) | |
parent | d1797dda877a7012d16981a399c5e6d4b8daf2bf (diff) | |
download | iced-e68da229b384fbe78514dab0b13c8eb4637f4f5d.tar.gz iced-e68da229b384fbe78514dab0b13c8eb4637f4f5d.tar.bz2 iced-e68da229b384fbe78514dab0b13c8eb4637f4f5d.zip |
Merge pull request #646 from mtsr/disable-button
Disabled button docs and consistent behavior
-rw-r--r-- | native/src/widget/button.rs | 24 | ||||
-rw-r--r-- | web/src/widget/button.rs | 23 |
2 files changed, 47 insertions, 0 deletions
diff --git a/native/src/widget/button.rs b/native/src/widget/button.rs index f61c22d0..c469a0e5 100644 --- a/native/src/widget/button.rs +++ b/native/src/widget/button.rs @@ -29,6 +29,29 @@ use std::hash::Hash; /// let button = Button::new(&mut state, Text::new("Press me!")) /// .on_press(Message::ButtonPressed); /// ``` +/// +/// If a [`Button::on_press`] handler is not set, the resulting [`Button`] will +/// be disabled: +/// +/// ``` +/// # use iced_native::{button, Text}; +/// # +/// # type Button<'a, Message> = +/// # iced_native::Button<'a, Message, iced_native::renderer::Null>; +/// # +/// #[derive(Clone)] +/// enum Message { +/// ButtonPressed, +/// } +/// +/// fn disabled_button(state: &mut button::State) -> Button<'_, Message> { +/// Button::new(state, Text::new("I'm disabled!")) +/// } +/// +/// fn enabled_button(state: &mut button::State) -> Button<'_, Message> { +/// disabled_button(state).on_press(Message::ButtonPressed) +/// } +/// ``` #[allow(missing_debug_implementations)] pub struct Button<'a, Message, Renderer: self::Renderer> { state: &'a mut State, @@ -97,6 +120,7 @@ where } /// Sets the message that will be produced when the [`Button`] is pressed. + /// If on_press isn't set, button will be disabled. pub fn on_press(mut self, msg: Message) -> Self { self.on_press = Some(msg); self diff --git a/web/src/widget/button.rs b/web/src/widget/button.rs index 8a36aab9..cd450b55 100644 --- a/web/src/widget/button.rs +++ b/web/src/widget/button.rs @@ -20,6 +20,26 @@ use dodrio::bumpalo; /// let button = Button::new(&mut state, Text::new("Press me!")) /// .on_press(Message::ButtonPressed); /// ``` +/// +/// If a [`Button::on_press`] handler is not set, the resulting [`Button`] will +/// be disabled: +/// +/// ``` +/// # use iced_web::{button, Button, Text}; +/// # +/// #[derive(Clone)] +/// enum Message { +/// ButtonPressed, +/// } +/// +/// fn disabled_button(state: &mut button::State) -> Button<'_, Message> { +/// Button::new(state, Text::new("I'm disabled!")) +/// } +/// +/// fn enabled_button(state: &mut button::State) -> Button<'_, Message> { +/// disabled_button(state).on_press(Message::ButtonPressed) +/// } +/// ``` #[allow(missing_debug_implementations)] pub struct Button<'a, Message> { content: Element<'a, Message>, @@ -90,6 +110,7 @@ impl<'a, Message> Button<'a, Message> { } /// Sets the message that will be produced when the [`Button`] is pressed. + /// If on_press isn't set, button will be disabled. pub fn on_press(mut self, msg: Message) -> Self { self.on_press = Some(msg); self @@ -153,6 +174,8 @@ where node = node.on("click", move |_root, _vdom, _event| { event_bus.publish(on_press.clone()); }); + } else { + node = node.attr("disabled", ""); } node.finish() |