summaryrefslogtreecommitdiffstats
path: root/lazy
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2022-12-22 15:03:23 +0100
committerLibravatar GitHub <noreply@github.com>2022-12-22 15:03:23 +0100
commita6d0d5773f0561a841a84b538523cbd97e91eccd (patch)
treeecd41b861f0ff38736373f532ee2c7d2664dd420 /lazy
parent678de1187994f29e3701740617bb5b1963f80c69 (diff)
parent5f2ec138d7b6793f781aab16ec59e0224ac4edef (diff)
downloadiced-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.rs2
-rw-r--r--lazy/src/lazy.rs2
-rw-r--r--lazy/src/responsive.rs25
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,