Only invalidate layout if children layout is invalid

This commit is contained in:
Cory Forsstrom 2023-04-17 18:40:41 -07:00
parent 07dfebfec0
commit ac7b77f59c
No known key found for this signature in database
GPG key ID: 1DFE170A4415C9F5

View file

@ -145,8 +145,6 @@ where
_renderer: &Renderer, _renderer: &Renderer,
limits: &layout::Limits, limits: &layout::Limits,
) -> layout::Node { ) -> layout::Node {
let _ = self.content.borrow_mut().layout.take();
layout::Node::new(limits.max()) layout::Node::new(limits.max())
} }
@ -186,7 +184,10 @@ where
let state = tree.state.downcast_mut::<State>(); let state = tree.state.downcast_mut::<State>();
let mut content = self.content.borrow_mut(); let mut content = self.content.borrow_mut();
content.resolve( let mut local_messages = vec![];
let mut local_shell = Shell::new(&mut local_messages);
let status = content.resolve(
&mut state.tree.borrow_mut(), &mut state.tree.borrow_mut(),
renderer, renderer,
layout, layout,
@ -199,10 +200,18 @@ where
cursor_position, cursor_position,
renderer, renderer,
clipboard, clipboard,
shell, &mut local_shell,
) )
}, },
) );
if local_shell.is_layout_invalid() {
let _ = content.layout.take();
}
shell.merge(local_shell, std::convert::identity);
status
} }
fn draw( fn draw(