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/lazy/responsive.rs | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) (limited to 'widget/src/lazy/responsive.rs') diff --git a/widget/src/lazy/responsive.rs b/widget/src/lazy/responsive.rs index a6c40ab0..c17798a6 100644 --- a/widget/src/lazy/responsive.rs +++ b/widget/src/lazy/responsive.rs @@ -1,4 +1,3 @@ -use crate::core::event::{self, Event}; use crate::core::layout::{self, Layout}; use crate::core::mouse; use crate::core::overlay; @@ -6,8 +5,8 @@ use crate::core::renderer; use crate::core::widget; use crate::core::widget::tree::{self, Tree}; use crate::core::{ - self, Clipboard, Element, Length, Point, Rectangle, Shell, Size, Vector, - Widget, + self, Clipboard, Element, Event, Length, Point, Rectangle, Shell, Size, + Vector, Widget, }; use crate::horizontal_space; use crate::runtime::overlay::Nested; @@ -193,14 +192,14 @@ where clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, viewport: &Rectangle, - ) -> event::Status { + ) { let state = tree.state.downcast_mut::(); let mut content = self.content.borrow_mut(); let mut local_messages = vec![]; let mut local_shell = Shell::new(&mut local_messages); - let status = content.resolve( + content.resolve( &mut state.tree.borrow_mut(), renderer, layout, @@ -215,7 +214,7 @@ where clipboard, &mut local_shell, viewport, - ) + ); }, ); @@ -224,8 +223,6 @@ where } shell.merge(local_shell, std::convert::identity); - - status } fn draw( @@ -425,28 +422,20 @@ where renderer: &Renderer, clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, - ) -> event::Status { + ) { let mut is_layout_invalid = false; - let event_status = self - .with_overlay_mut_maybe(|overlay| { - let event_status = overlay.on_event( - event, layout, cursor, renderer, clipboard, shell, - ); - - is_layout_invalid = shell.is_layout_invalid(); + let _ = self.with_overlay_mut_maybe(|overlay| { + overlay.on_event(event, layout, cursor, renderer, clipboard, shell); - event_status - }) - .unwrap_or(event::Status::Ignored); + is_layout_invalid = shell.is_layout_invalid(); + }); if is_layout_invalid { self.with_overlay_mut(|(_overlay, layout)| { **layout = None; }); } - - event_status } fn is_over( -- 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/lazy/responsive.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'widget/src/lazy/responsive.rs') diff --git a/widget/src/lazy/responsive.rs b/widget/src/lazy/responsive.rs index c17798a6..a8abbce8 100644 --- a/widget/src/lazy/responsive.rs +++ b/widget/src/lazy/responsive.rs @@ -182,7 +182,7 @@ where ); } - fn on_event( + fn update( &mut self, tree: &mut Tree, event: Event, @@ -205,7 +205,7 @@ where layout, &self.view, |tree, renderer, layout, element| { - element.as_widget_mut().on_event( + element.as_widget_mut().update( tree, event, layout, -- cgit From c6af79a1d06013343f9caf2de80597d627254084 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 29 Oct 2024 20:53:29 +0100 Subject: Fix deferred layout on resize after drawing --- widget/src/lazy/responsive.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'widget/src/lazy/responsive.rs') diff --git a/widget/src/lazy/responsive.rs b/widget/src/lazy/responsive.rs index a8abbce8..f9bd0334 100644 --- a/widget/src/lazy/responsive.rs +++ b/widget/src/lazy/responsive.rs @@ -82,18 +82,21 @@ where new_size: Size, view: &dyn Fn(Size) -> Element<'a, Message, Theme, Renderer>, ) { - let is_tree_empty = - tree.tag == tree::Tag::stateless() && tree.children.is_empty(); + if self.size != new_size { + self.element = view(new_size); + self.size = new_size; + self.layout = None; - if !is_tree_empty && self.size == new_size { - return; - } - - self.element = view(new_size); - self.size = new_size; - self.layout = None; + tree.diff(&self.element); + } else { + let is_tree_empty = + tree.tag == tree::Tag::stateless() && tree.children.is_empty(); - tree.diff(&self.element); + if is_tree_empty { + self.layout = None; + tree.diff(&self.element); + } + } } fn resolve( -- 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` --- widget/src/lazy/responsive.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'widget/src/lazy/responsive.rs') diff --git a/widget/src/lazy/responsive.rs b/widget/src/lazy/responsive.rs index f9bd0334..2aef1fa3 100644 --- a/widget/src/lazy/responsive.rs +++ b/widget/src/lazy/responsive.rs @@ -417,7 +417,7 @@ where .unwrap_or_default() } - fn on_event( + fn update( &mut self, event: Event, layout: Layout<'_>, @@ -429,7 +429,7 @@ where let mut is_layout_invalid = false; let _ = self.with_overlay_mut_maybe(|overlay| { - overlay.on_event(event, layout, cursor, renderer, clipboard, shell); + overlay.update(event, layout, cursor, renderer, clipboard, shell); is_layout_invalid = shell.is_layout_invalid(); }); -- cgit