From e4eb0553de13053c9828fd5454c281e27e598d65 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 28 Apr 2020 03:46:03 +0200 Subject: Allow `canvas::State` to produce messages --- wgpu/src/widget/canvas/cache.rs | 7 +++++-- wgpu/src/widget/canvas/state.rs | 14 ++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'wgpu/src/widget/canvas') diff --git a/wgpu/src/widget/canvas/cache.rs b/wgpu/src/widget/canvas/cache.rs index 12cc6442..2beed0f7 100644 --- a/wgpu/src/widget/canvas/cache.rs +++ b/wgpu/src/widget/canvas/cache.rs @@ -80,7 +80,10 @@ impl Cache { Geometry::from_primitive(Primitive::Cached { cache: primitive }) } - pub fn with<'a, T>(&'a self, input: T) -> impl crate::canvas::State + 'a + pub fn with<'a, T, Message>( + &'a self, + input: T, + ) -> impl crate::canvas::State + 'a where T: Drawable + std::fmt::Debug + 'a, { @@ -93,7 +96,7 @@ struct Bind<'a, T> { input: T, } -impl<'a, T> crate::canvas::State for Bind<'a, T> +impl<'a, T, Message> crate::canvas::State for Bind<'a, T> where T: Drawable + std::fmt::Debug + 'a, { diff --git a/wgpu/src/widget/canvas/state.rs b/wgpu/src/widget/canvas/state.rs index 8388f94d..ab433dd1 100644 --- a/wgpu/src/widget/canvas/state.rs +++ b/wgpu/src/widget/canvas/state.rs @@ -1,17 +1,19 @@ use crate::canvas::{Event, Geometry, Size}; -pub trait State { - fn update(&mut self, _event: Event, _bounds: Size) {} +pub trait State { + fn update(&mut self, _event: Event, _bounds: Size) -> Option { + None + } fn draw(&self, bounds: Size) -> Vec; } -impl State for &mut T +impl State for &mut T where - T: State, + T: State, { - fn update(&mut self, event: Event, bounds: Size) { - T::update(self, event, bounds); + fn update(&mut self, event: Event, bounds: Size) -> Option { + T::update(self, event, bounds) } fn draw(&self, bounds: Size) -> Vec { -- cgit