summaryrefslogtreecommitdiffstats
path: root/lazy
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-03-14 17:41:21 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-03-14 17:44:25 +0700
commit9f27969d14232355ad628431fb67aa07e42e768f (patch)
treed8f4e86aa58478a206c62c349548e9be40dda164 /lazy
parent3efb59dea3d206a9d627ce5a7a7a93c00d769ba8 (diff)
downloadiced-9f27969d14232355ad628431fb67aa07e42e768f.tar.gz
iced-9f27969d14232355ad628431fb67aa07e42e768f.tar.bz2
iced-9f27969d14232355ad628431fb67aa07e42e768f.zip
Fix incorrect `layout` in `Widget::overlay` for `pure::Responsive`
Diffstat (limited to 'lazy')
-rw-r--r--lazy/src/pure/responsive.rs26
1 files changed, 21 insertions, 5 deletions
diff --git a/lazy/src/pure/responsive.rs b/lazy/src/pure/responsive.rs
index 2b77873f..291f1aaf 100644
--- a/lazy/src/pure/responsive.rs
+++ b/lazy/src/pure/responsive.rs
@@ -9,7 +9,7 @@ use iced_pure::widget::tree::{self, Tree};
use iced_pure::{Element, Widget};
use ouroboros::self_referencing;
-use std::cell::{Ref, RefCell, RefMut};
+use std::cell::{RefCell, RefMut};
use std::marker::PhantomData;
use std::ops::Deref;
@@ -236,11 +236,27 @@ where
let state = tree.state.downcast_ref::<State>();
let overlay = OverlayBuilder {
- content: self.content.borrow(),
+ content: self.content.borrow_mut(),
tree: state.tree.borrow_mut(),
types: PhantomData,
overlay_builder: |content, tree| {
- content.element.as_widget().overlay(tree, layout, renderer)
+ content.update(
+ tree,
+ renderer,
+ layout.bounds().size(),
+ &self.view,
+ );
+
+ let content_layout = Layout::with_offset(
+ layout.position() - Point::ORIGIN,
+ &content.layout,
+ );
+
+ content.element.as_widget().overlay(
+ tree,
+ content_layout,
+ renderer,
+ )
},
}
.build();
@@ -267,11 +283,11 @@ where
#[self_referencing]
struct Overlay<'a, 'b, Message, Renderer> {
- content: Ref<'a, Content<'b, Message, Renderer>>,
+ content: RefMut<'a, Content<'b, Message, Renderer>>,
tree: RefMut<'a, Tree>,
types: PhantomData<Message>,
- #[borrows(content, mut tree)]
+ #[borrows(mut content, mut tree)]
#[covariant]
overlay: Option<overlay::Element<'this, Message, Renderer>>,
}