summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-11-12 01:24:59 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-11-12 01:24:59 +0100
commit3aca1771329cf7845cbc6c98e536cfb6c0e7c3ff (patch)
tree76490c1f1909f03fa4d820ab39c1d003f5e55ecb /graphics
parentbf6c65b5ad24595bbb12570e38118321f4b572ac (diff)
downloadiced-3aca1771329cf7845cbc6c98e536cfb6c0e7c3ff.tar.gz
iced-3aca1771329cf7845cbc6c98e536cfb6c0e7c3ff.tar.bz2
iced-3aca1771329cf7845cbc6c98e536cfb6c0e7c3ff.zip
Implement event capturing for `Canvas`
Diffstat (limited to 'graphics')
-rw-r--r--graphics/src/widget/canvas.rs11
-rw-r--r--graphics/src/widget/canvas/event.rs1
-rw-r--r--graphics/src/widget/canvas/program.rs9
3 files changed, 13 insertions, 8 deletions
diff --git a/graphics/src/widget/canvas.rs b/graphics/src/widget/canvas.rs
index 4478bca8..ae0d87a4 100644
--- a/graphics/src/widget/canvas.rs
+++ b/graphics/src/widget/canvas.rs
@@ -16,11 +16,11 @@ use iced_native::{
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;
@@ -184,11 +184,14 @@ 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
diff --git a/graphics/src/widget/canvas/event.rs b/graphics/src/widget/canvas/event.rs
index 67a5d3bc..ede2fd73 100644
--- a/graphics/src/widget/canvas/event.rs
+++ b/graphics/src/widget/canvas/event.rs
@@ -1,3 +1,4 @@
+//! Handle events of a canvas.
use iced_native::keyboard;
use iced_native::mouse;
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)
}