From 1db11ba69a3183924a1f4cae91031f4c5051b6dc Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 11 Nov 2020 23:54:59 +0100 Subject: Introduce `event::Status` in `iced_native` --- native/src/event.rs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'native/src/event.rs') diff --git a/native/src/event.rs b/native/src/event.rs index 606a71d6..160b5ce7 100644 --- a/native/src/event.rs +++ b/native/src/event.rs @@ -1,3 +1,4 @@ +//! Handle events of a user interface. use crate::{keyboard, mouse, window}; /// A user interface event. @@ -6,7 +7,7 @@ use crate::{keyboard, mouse, window}; /// additional events, feel free to [open an issue] and share your use case!_ /// /// [open an issue]: https://github.com/hecrj/iced/issues -#[derive(PartialEq, Clone, Debug)] +#[derive(Debug, Clone, PartialEq)] pub enum Event { /// A keyboard event Keyboard(keyboard::Event), @@ -17,3 +18,23 @@ pub enum Event { /// A window event Window(window::Event), } + +/// The status of an [`Event`] after being processed by a [`UserInterface`]. +/// +/// [`Event`]: enum.Event.html +/// [`UserInterface`]: ../struct.UserInterface.html +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum Status { + /// The [`Event`] was _NOT_ handled by any widget in the [`UserInterface`]. + /// + /// [`Event`]: enum.Event.html + /// [`UserInterface`]: ../struct.UserInterface.html + Ignored, + + /// The [`Event`] was handled and processed by a widget in the + /// [`UserInterface`]. + /// + /// [`Event`]: enum.Event.html + /// [`UserInterface`]: ../struct.UserInterface.html + Captured, +} -- cgit From 3f968b8c876b7c2351232856887fb9c3e3db3130 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 12 Nov 2020 00:09:52 +0100 Subject: Make `Widget::on_event` return an `event::Status` --- native/src/event.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'native/src/event.rs') diff --git a/native/src/event.rs b/native/src/event.rs index 160b5ce7..91f33bd5 100644 --- a/native/src/event.rs +++ b/native/src/event.rs @@ -19,22 +19,19 @@ pub enum Event { Window(window::Event), } -/// The status of an [`Event`] after being processed by a [`UserInterface`]. +/// The status of an [`Event`] after being processed. /// /// [`Event`]: enum.Event.html /// [`UserInterface`]: ../struct.UserInterface.html #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Status { - /// The [`Event`] was _NOT_ handled by any widget in the [`UserInterface`]. + /// The [`Event`] was _NOT_ handled by any widget. /// /// [`Event`]: enum.Event.html - /// [`UserInterface`]: ../struct.UserInterface.html Ignored, - /// The [`Event`] was handled and processed by a widget in the - /// [`UserInterface`]. + /// The [`Event`] was handled and processed by a widget. /// /// [`Event`]: enum.Event.html - /// [`UserInterface`]: ../struct.UserInterface.html Captured, } -- cgit From a44cd072120cc059e8dc4633b33d902817f89834 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 12 Nov 2020 00:19:12 +0100 Subject: Implement event capturing for `Button` --- native/src/event.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'native/src/event.rs') diff --git a/native/src/event.rs b/native/src/event.rs index 91f33bd5..689c8f5d 100644 --- a/native/src/event.rs +++ b/native/src/event.rs @@ -25,7 +25,7 @@ pub enum Event { /// [`UserInterface`]: ../struct.UserInterface.html #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Status { - /// The [`Event`] was _NOT_ handled by any widget. + /// The [`Event`] was **NOT** handled by any widget. /// /// [`Event`]: enum.Event.html Ignored, -- cgit From 3bcee62beb36d9e186d8716c7660433fac071ed6 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 12 Nov 2020 00:30:06 +0100 Subject: Implement event capturing for `Column` --- native/src/event.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'native/src/event.rs') diff --git a/native/src/event.rs b/native/src/event.rs index 689c8f5d..9c079151 100644 --- a/native/src/event.rs +++ b/native/src/event.rs @@ -35,3 +35,24 @@ pub enum Status { /// [`Event`]: enum.Event.html Captured, } + +impl Status { + /// Merges two [`Status`] into one. + /// + /// `Captured` takes precedence over `Ignored`: + /// + /// ``` + /// use iced_native::event::Status; + /// + /// assert_eq!(Status::Ignored.merge(Status::Ignored), Status::Ignored); + /// assert_eq!(Status::Ignored.merge(Status::Captured), Status::Captured); + /// assert_eq!(Status::Captured.merge(Status::Ignored), Status::Captured); + /// assert_eq!(Status::Captured.merge(Status::Captured), Status::Captured); + /// ``` + pub fn merge(self, b: Self) -> Self { + match self { + Status::Ignored => b, + Status::Captured => Status::Captured, + } + } +} -- cgit