From 752403d70c851ece620c4007710062b158e8dec3 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 25 Oct 2024 15:40:05 +0200 Subject: Split `Shell::request_redraw` into two different methods --- examples/toast/src/main.rs | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) (limited to 'examples/toast') diff --git a/examples/toast/src/main.rs b/examples/toast/src/main.rs index 8f6a836e..0b46c74e 100644 --- a/examples/toast/src/main.rs +++ b/examples/toast/src/main.rs @@ -500,8 +500,6 @@ mod toast { shell: &mut Shell<'_, Message>, ) -> event::Status { if let Event::Window(window::Event::RedrawRequested(now)) = &event { - let mut next_redraw: Option = None; - self.instants.iter_mut().enumerate().for_each( |(index, maybe_instant)| { if let Some(instant) = maybe_instant.as_mut() { @@ -512,22 +510,12 @@ mod toast { if remaining == Duration::ZERO { maybe_instant.take(); shell.publish((self.on_close)(index)); - next_redraw = - Some(window::RedrawRequest::NextFrame); } else { - let redraw_at = - window::RedrawRequest::At(*now + remaining); - next_redraw = next_redraw - .map(|redraw| redraw.min(redraw_at)) - .or(Some(redraw_at)); + shell.request_redraw_at(*now + remaining); } } }, ); - - if let Some(redraw) = next_redraw { - shell.request_redraw(redraw); - } } let viewport = layout.bounds(); -- cgit 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` --- examples/toast/src/main.rs | 53 ++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 28 deletions(-) (limited to 'examples/toast') diff --git a/examples/toast/src/main.rs b/examples/toast/src/main.rs index 0b46c74e..079b96b4 100644 --- a/examples/toast/src/main.rs +++ b/examples/toast/src/main.rs @@ -169,7 +169,6 @@ mod toast { use iced::advanced::renderer; use iced::advanced::widget::{self, Operation, Tree}; use iced::advanced::{Clipboard, Shell, Widget}; - use iced::event::{self, Event}; use iced::mouse; use iced::theme; use iced::widget::{ @@ -177,8 +176,8 @@ mod toast { }; use iced::window; use iced::{ - Alignment, Center, Element, Fill, Length, Point, Rectangle, Renderer, - Size, Theme, Vector, + Alignment, Center, Element, Event, Fill, Length, Point, Rectangle, + Renderer, Size, Theme, Vector, }; pub const DEFAULT_TIMEOUT: u64 = 5; @@ -369,7 +368,7 @@ mod toast { clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, viewport: &Rectangle, - ) -> event::Status { + ) { self.content.as_widget_mut().on_event( &mut state.children[0], event, @@ -379,7 +378,7 @@ mod toast { clipboard, shell, viewport, - ) + ); } fn draw( @@ -498,7 +497,7 @@ mod toast { renderer: &Renderer, clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, - ) -> event::Status { + ) { if let Event::Window(window::Event::RedrawRequested(now)) = &event { self.instants.iter_mut().enumerate().for_each( |(index, maybe_instant)| { @@ -520,35 +519,33 @@ mod toast { let viewport = layout.bounds(); - self.toasts + for (((child, state), layout), instant) in self + .toasts .iter_mut() .zip(self.state.iter_mut()) .zip(layout.children()) .zip(self.instants.iter_mut()) - .map(|(((child, state), layout), instant)| { - let mut local_messages = vec![]; - let mut local_shell = Shell::new(&mut local_messages); - - let status = child.as_widget_mut().on_event( - state, - event.clone(), - layout, - cursor, - renderer, - clipboard, - &mut local_shell, - &viewport, - ); + { + let mut local_messages = vec![]; + let mut local_shell = Shell::new(&mut local_messages); - if !local_shell.is_empty() { - instant.take(); - } + child.as_widget_mut().on_event( + state, + event.clone(), + layout, + cursor, + renderer, + clipboard, + &mut local_shell, + &viewport, + ); - shell.merge(local_shell, std::convert::identity); + if !local_shell.is_empty() { + instant.take(); + } - status - }) - .fold(event::Status::Ignored, event::Status::merge) + shell.merge(local_shell, std::convert::identity); + } } 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` --- examples/toast/src/main.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'examples/toast') diff --git a/examples/toast/src/main.rs b/examples/toast/src/main.rs index 079b96b4..893c52e2 100644 --- a/examples/toast/src/main.rs +++ b/examples/toast/src/main.rs @@ -358,7 +358,7 @@ mod toast { }); } - fn on_event( + fn update( &mut self, state: &mut Tree, event: Event, @@ -369,7 +369,7 @@ mod toast { shell: &mut Shell<'_, Message>, viewport: &Rectangle, ) { - self.content.as_widget_mut().on_event( + self.content.as_widget_mut().update( &mut state.children[0], event, layout, @@ -529,7 +529,7 @@ mod toast { let mut local_messages = vec![]; let mut local_shell = Shell::new(&mut local_messages); - child.as_widget_mut().on_event( + child.as_widget_mut().update( state, event.clone(), layout, -- cgit From e5f1e31a5c068fe992cab076661cb6e2d120bdf1 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 6 Nov 2024 00:02:46 +0100 Subject: Rename `Overlay::on_event` to `update` --- examples/toast/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'examples/toast') diff --git a/examples/toast/src/main.rs b/examples/toast/src/main.rs index 893c52e2..8d1e3924 100644 --- a/examples/toast/src/main.rs +++ b/examples/toast/src/main.rs @@ -489,7 +489,7 @@ mod toast { .translate(Vector::new(self.position.x, self.position.y)) } - fn on_event( + fn update( &mut self, event: Event, layout: Layout<'_>, -- cgit