Fix incorrect layout in Widget::overlay for pure::Responsive
This commit is contained in:
parent
3efb59dea3
commit
9f27969d14
1 changed files with 21 additions and 5 deletions
|
|
@ -9,7 +9,7 @@ use iced_pure::widget::tree::{self, Tree};
|
||||||
use iced_pure::{Element, Widget};
|
use iced_pure::{Element, Widget};
|
||||||
|
|
||||||
use ouroboros::self_referencing;
|
use ouroboros::self_referencing;
|
||||||
use std::cell::{Ref, RefCell, RefMut};
|
use std::cell::{RefCell, RefMut};
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
|
||||||
|
|
@ -236,11 +236,27 @@ where
|
||||||
let state = tree.state.downcast_ref::<State>();
|
let state = tree.state.downcast_ref::<State>();
|
||||||
|
|
||||||
let overlay = OverlayBuilder {
|
let overlay = OverlayBuilder {
|
||||||
content: self.content.borrow(),
|
content: self.content.borrow_mut(),
|
||||||
tree: state.tree.borrow_mut(),
|
tree: state.tree.borrow_mut(),
|
||||||
types: PhantomData,
|
types: PhantomData,
|
||||||
overlay_builder: |content, tree| {
|
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();
|
.build();
|
||||||
|
|
@ -267,11 +283,11 @@ where
|
||||||
|
|
||||||
#[self_referencing]
|
#[self_referencing]
|
||||||
struct Overlay<'a, 'b, Message, Renderer> {
|
struct Overlay<'a, 'b, Message, Renderer> {
|
||||||
content: Ref<'a, Content<'b, Message, Renderer>>,
|
content: RefMut<'a, Content<'b, Message, Renderer>>,
|
||||||
tree: RefMut<'a, Tree>,
|
tree: RefMut<'a, Tree>,
|
||||||
types: PhantomData<Message>,
|
types: PhantomData<Message>,
|
||||||
|
|
||||||
#[borrows(content, mut tree)]
|
#[borrows(mut content, mut tree)]
|
||||||
#[covariant]
|
#[covariant]
|
||||||
overlay: Option<overlay::Element<'this, Message, Renderer>>,
|
overlay: Option<overlay::Element<'this, Message, Renderer>>,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue