summaryrefslogtreecommitdiffstats
path: root/examples/multitouch
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-10-28 16:58:00 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-11-05 23:52:58 +0100
commit920596ed6f44acf8d87d2135c1b8967bab23d5b9 (patch)
treeca3f673c01bf9abba79f6b5f172df189788d50de /examples/multitouch
parenta84b328dcc3e2f941f9595a2f8c3b1d061442722 (diff)
downloadiced-920596ed6f44acf8d87d2135c1b8967bab23d5b9.tar.gz
iced-920596ed6f44acf8d87d2135c1b8967bab23d5b9.tar.bz2
iced-920596ed6f44acf8d87d2135c1b8967bab23d5b9.zip
Implement `reactive-rendering` for `canvas`
Diffstat (limited to 'examples/multitouch')
-rw-r--r--examples/multitouch/src/main.rs33
1 files changed, 16 insertions, 17 deletions
diff --git a/examples/multitouch/src/main.rs b/examples/multitouch/src/main.rs
index d5e5dffa..5f4a5c90 100644
--- a/examples/multitouch/src/main.rs
+++ b/examples/multitouch/src/main.rs
@@ -3,9 +3,8 @@
//! computers like Microsoft Surface.
use iced::mouse;
use iced::touch;
-use iced::widget::canvas::event;
use iced::widget::canvas::stroke::{self, Stroke};
-use iced::widget::canvas::{self, Canvas, Geometry};
+use iced::widget::canvas::{self, Canvas, Event, Geometry};
use iced::{Color, Element, Fill, Point, Rectangle, Renderer, Theme};
use std::collections::HashMap;
@@ -56,25 +55,25 @@ impl canvas::Program<Message> for Multitouch {
fn update(
&self,
_state: &mut Self::State,
- event: event::Event,
+ event: Event,
_bounds: Rectangle,
_cursor: mouse::Cursor,
- ) -> (event::Status, Option<Message>) {
- match event {
- event::Event::Touch(touch_event) => match touch_event {
+ ) -> Option<canvas::Action<Message>> {
+ let message = match event {
+ Event::Touch(
touch::Event::FingerPressed { id, position }
- | touch::Event::FingerMoved { id, position } => (
- event::Status::Captured,
- Some(Message::FingerPressed { id, position }),
- ),
+ | touch::Event::FingerMoved { id, position },
+ ) => Some(Message::FingerPressed { id, position }),
+ Event::Touch(
touch::Event::FingerLifted { id, .. }
- | touch::Event::FingerLost { id, .. } => (
- event::Status::Captured,
- Some(Message::FingerLifted { id }),
- ),
- },
- _ => (event::Status::Ignored, None),
- }
+ | touch::Event::FingerLost { id, .. },
+ ) => Some(Message::FingerLifted { id }),
+ _ => None,
+ };
+
+ message
+ .map(canvas::Action::publish)
+ .map(canvas::Action::and_capture)
}
fn draw(