From dcc184b01b753dbecb500205391f6eaaa21c8683 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 25 Oct 2024 19:28:18 +0200 Subject: Replace `event::Status` in `Widget::on_event` with `Shell::capture_event` --- widget/src/shader.rs | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) (limited to 'widget/src/shader.rs') diff --git a/widget/src/shader.rs b/widget/src/shader.rs index fa692336..5e4d3915 100644 --- a/widget/src/shader.rs +++ b/widget/src/shader.rs @@ -97,7 +97,7 @@ where _clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, _viewport: &Rectangle, - ) -> event::Status { + ) { let bounds = layout.bounds(); let custom_shader_event = match event { @@ -115,22 +115,14 @@ where if let Some(custom_shader_event) = custom_shader_event { let state = tree.state.downcast_mut::(); - let (event_status, message) = self.program.update( + self.program.update( state, custom_shader_event, bounds, cursor, shell, ); - - if let Some(message) = message { - shell.publish(message); - } - - return event_status; } - - event::Status::Ignored } fn mouse_interaction( @@ -195,8 +187,8 @@ where bounds: Rectangle, cursor: mouse::Cursor, shell: &mut Shell<'_, Message>, - ) -> (event::Status, Option) { - T::update(self, state, event, bounds, cursor, shell) + ) { + T::update(self, state, event, bounds, cursor, shell); } fn draw( -- cgit From f02bfc3f68322bea0c56283d76888714be401ec2 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 25 Oct 2024 22:06:06 +0200 Subject: Rename `Widget::on_event` to `update` --- widget/src/shader.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'widget/src/shader.rs') diff --git a/widget/src/shader.rs b/widget/src/shader.rs index 5e4d3915..115a5ed9 100644 --- a/widget/src/shader.rs +++ b/widget/src/shader.rs @@ -87,7 +87,7 @@ where layout::atomic(limits, self.width, self.height) } - fn on_event( + fn update( &mut self, tree: &mut Tree, event: crate::core::Event, -- cgit From 6fc16769c4fb07d5e976a9c1762ecd17cf734bce Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 4 Nov 2024 18:26:46 +0100 Subject: Unify `shader::Program` API with `canvas::Program` --- widget/src/shader.rs | 54 ++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) (limited to 'widget/src/shader.rs') diff --git a/widget/src/shader.rs b/widget/src/shader.rs index 115a5ed9..8ec57482 100644 --- a/widget/src/shader.rs +++ b/widget/src/shader.rs @@ -1,23 +1,22 @@ //! A custom shader widget for wgpu applications. -mod event; mod program; -pub use event::Event; pub use program::Program; -use crate::core; +use crate::core::event; use crate::core::layout::{self, Layout}; use crate::core::mouse; use crate::core::renderer; use crate::core::widget::tree::{self, Tree}; use crate::core::widget::{self, Widget}; use crate::core::window; -use crate::core::{Clipboard, Element, Length, Rectangle, Shell, Size}; +use crate::core::{Clipboard, Element, Event, Length, Rectangle, Shell, Size}; use crate::renderer::wgpu::primitive; use std::marker::PhantomData; pub use crate::graphics::Viewport; +pub use crate::Action; pub use primitive::{Primitive, Storage}; /// A widget which can render custom shaders with Iced's `wgpu` backend. @@ -100,28 +99,30 @@ where ) { let bounds = layout.bounds(); - let custom_shader_event = match event { - core::Event::Mouse(mouse_event) => Some(Event::Mouse(mouse_event)), - core::Event::Keyboard(keyboard_event) => { - Some(Event::Keyboard(keyboard_event)) + let state = tree.state.downcast_mut::(); + + if let Some(action) = self.program.update(state, event, bounds, cursor) + { + let (message, redraw_request, event_status) = action.into_inner(); + + if let Some(message) = message { + shell.publish(message); } - core::Event::Touch(touch_event) => Some(Event::Touch(touch_event)), - core::Event::Window(window::Event::RedrawRequested(instant)) => { - Some(Event::RedrawRequested(instant)) + + if let Some(redraw_request) = redraw_request { + match redraw_request { + window::RedrawRequest::NextFrame => { + shell.request_redraw(); + } + window::RedrawRequest::At(at) => { + shell.request_redraw_at(at); + } + } + } + + if event_status == event::Status::Captured { + shell.capture_event(); } - core::Event::Window(_) => None, - }; - - if let Some(custom_shader_event) = custom_shader_event { - let state = tree.state.downcast_mut::(); - - self.program.update( - state, - custom_shader_event, - bounds, - cursor, - shell, - ); } } @@ -186,9 +187,8 @@ where event: Event, bounds: Rectangle, cursor: mouse::Cursor, - shell: &mut Shell<'_, Message>, - ) { - T::update(self, state, event, bounds, cursor, shell); + ) -> Option> { + T::update(self, state, event, bounds, cursor) } fn draw( -- cgit