diff options
author | 2022-12-22 15:03:23 +0100 | |
---|---|---|
committer | 2022-12-22 15:03:23 +0100 | |
commit | a6d0d5773f0561a841a84b538523cbd97e91eccd (patch) | |
tree | ecd41b861f0ff38736373f532ee2c7d2664dd420 /lazy | |
parent | 678de1187994f29e3701740617bb5b1963f80c69 (diff) | |
parent | 5f2ec138d7b6793f781aab16ec59e0224ac4edef (diff) | |
download | iced-a6d0d5773f0561a841a84b538523cbd97e91eccd.tar.gz iced-a6d0d5773f0561a841a84b538523cbd97e91eccd.tar.bz2 iced-a6d0d5773f0561a841a84b538523cbd97e91eccd.zip |
Merge pull request #1615 from iced-rs/fix/responsive-operations
Fix operations for `Responsive` widget
Diffstat (limited to '')
-rw-r--r-- | lazy/src/component.rs | 2 | ||||
-rw-r--r-- | lazy/src/lazy.rs | 2 | ||||
-rw-r--r-- | lazy/src/responsive.rs | 25 |
3 files changed, 28 insertions, 1 deletions
diff --git a/lazy/src/component.rs b/lazy/src/component.rs index 3d7b8758..ad15d69d 100644 --- a/lazy/src/component.rs +++ b/lazy/src/component.rs @@ -234,6 +234,7 @@ where &self, tree: &mut Tree, layout: Layout<'_>, + renderer: &Renderer, operation: &mut dyn widget::Operation<Message>, ) { struct MapOperation<'a, B> { @@ -274,6 +275,7 @@ where element.as_widget().operate( &mut tree.children[0], layout, + renderer, &mut MapOperation { operation }, ); }); diff --git a/lazy/src/lazy.rs b/lazy/src/lazy.rs index 2611dd10..ec35e8f0 100644 --- a/lazy/src/lazy.rs +++ b/lazy/src/lazy.rs @@ -130,12 +130,14 @@ where &self, tree: &mut Tree, layout: Layout<'_>, + renderer: &Renderer, operation: &mut dyn widget::Operation<Message>, ) { self.with_element(|element| { element.as_widget().operate( &mut tree.children[0], layout, + renderer, operation, ); }); diff --git a/lazy/src/responsive.rs b/lazy/src/responsive.rs index 5e1b5dff..945c935a 100644 --- a/lazy/src/responsive.rs +++ b/lazy/src/responsive.rs @@ -3,8 +3,8 @@ use iced_native::layout::{self, Layout}; use iced_native::mouse; use iced_native::overlay; use iced_native::renderer; -use iced_native::widget::horizontal_space; use iced_native::widget::tree::{self, Tree}; +use iced_native::widget::{self, horizontal_space}; use iced_native::{ Clipboard, Element, Length, Point, Rectangle, Shell, Size, Widget, }; @@ -142,6 +142,29 @@ where layout::Node::new(limits.max()) } + fn operate( + &self, + tree: &mut Tree, + layout: Layout<'_>, + renderer: &Renderer, + operation: &mut dyn widget::Operation<Message>, + ) { + let state = tree.state.downcast_mut::<State>(); + let mut content = self.content.borrow_mut(); + + content.resolve( + &mut state.tree.borrow_mut(), + renderer, + layout, + &self.view, + |tree, renderer, layout, element| { + element + .as_widget() + .operate(tree, layout, renderer, operation); + }, + ); + } + fn on_event( &mut self, tree: &mut Tree, |