diff options
Diffstat (limited to '')
| -rw-r--r-- | graphics/src/widget/canvas.rs | 21 | ||||
| -rw-r--r-- | graphics/src/widget/canvas/event.rs | 3 | ||||
| -rw-r--r-- | graphics/src/widget/canvas/program.rs | 9 | 
3 files changed, 22 insertions, 11 deletions
| diff --git a/graphics/src/widget/canvas.rs b/graphics/src/widget/canvas.rs index 73778d16..ae0d87a4 100644 --- a/graphics/src/widget/canvas.rs +++ b/graphics/src/widget/canvas.rs @@ -7,18 +7,20 @@  //! [`Canvas`]: struct.Canvas.html  //! [`Frame`]: struct.Frame.html  use crate::{Backend, Defaults, Primitive, Renderer}; +use iced_native::layout; +use iced_native::mouse;  use iced_native::{ -    layout, mouse, Clipboard, Element, Hasher, Layout, Length, Point, -    Rectangle, Size, Vector, Widget, +    Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Vector, +    Widget,  };  use std::hash::Hash;  use std::marker::PhantomData; +pub mod event;  pub mod path;  mod cache;  mod cursor; -mod event;  mod fill;  mod frame;  mod geometry; @@ -166,7 +168,7 @@ where          messages: &mut Vec<Message>,          _renderer: &Renderer<B>,          _clipboard: Option<&dyn Clipboard>, -    ) { +    ) -> event::Status {          let bounds = layout.bounds();          let canvas_event = match event { @@ -182,12 +184,17 @@ where          let cursor = Cursor::from_window_position(cursor_position);          if let Some(canvas_event) = canvas_event { -            if let Some(message) = -                self.program.update(canvas_event, bounds, cursor) -            { +            let (event_status, message) = +                self.program.update(canvas_event, bounds, cursor); + +            if let Some(message) = message {                  messages.push(message);              } + +            return event_status;          } + +        event::Status::Ignored      }      fn draw( diff --git a/graphics/src/widget/canvas/event.rs b/graphics/src/widget/canvas/event.rs index 0e66f0ff..ede2fd73 100644 --- a/graphics/src/widget/canvas/event.rs +++ b/graphics/src/widget/canvas/event.rs @@ -1,6 +1,9 @@ +//! Handle events of a canvas.  use iced_native::keyboard;  use iced_native::mouse; +pub use iced_native::event::Status; +  /// A [`Canvas`] event.  ///  /// [`Canvas`]: struct.Event.html diff --git a/graphics/src/widget/canvas/program.rs b/graphics/src/widget/canvas/program.rs index 725d9d72..e8f43380 100644 --- a/graphics/src/widget/canvas/program.rs +++ b/graphics/src/widget/canvas/program.rs @@ -1,4 +1,5 @@ -use crate::canvas::{Cursor, Event, Geometry}; +use crate::canvas::event::{self, Event}; +use crate::canvas::{Cursor, Geometry};  use iced_native::{mouse, Rectangle};  /// The state and logic of a [`Canvas`]. @@ -27,8 +28,8 @@ pub trait Program<Message> {          _event: Event,          _bounds: Rectangle,          _cursor: Cursor, -    ) -> Option<Message> { -        None +    ) -> (event::Status, Option<Message>) { +        (event::Status::Ignored, None)      }      /// Draws the state of the [`Program`], producing a bunch of [`Geometry`]. @@ -67,7 +68,7 @@ where          event: Event,          bounds: Rectangle,          cursor: Cursor, -    ) -> Option<Message> { +    ) -> (event::Status, Option<Message>) {          T::update(self, event, bounds, cursor)      } | 
