Fix deferred layout on resize after drawing
This commit is contained in:
parent
4e47450c33
commit
c6af79a1d0
3 changed files with 49 additions and 73 deletions
|
|
@ -17,7 +17,6 @@
|
|||
//! }
|
||||
//! ```
|
||||
use crate::core::border::{self, Border};
|
||||
use crate::core::event::{self, Event};
|
||||
use crate::core::layout;
|
||||
use crate::core::mouse;
|
||||
use crate::core::overlay;
|
||||
|
|
@ -28,8 +27,8 @@ use crate::core::widget::tree::{self, Tree};
|
|||
use crate::core::widget::Operation;
|
||||
use crate::core::window;
|
||||
use crate::core::{
|
||||
Background, Clipboard, Color, Element, Layout, Length, Padding, Rectangle,
|
||||
Shadow, Shell, Size, Theme, Vector, Widget,
|
||||
Background, Clipboard, Color, Element, Event, Layout, Length, Padding,
|
||||
Rectangle, Shadow, Shell, Size, Theme, Vector, Widget,
|
||||
};
|
||||
|
||||
/// A generic widget that produces a message when pressed.
|
||||
|
|
@ -295,7 +294,7 @@ where
|
|||
viewport,
|
||||
);
|
||||
|
||||
if shell.event_status() == event::Status::Captured {
|
||||
if shell.is_event_captured() {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -82,18 +82,21 @@ where
|
|||
new_size: Size,
|
||||
view: &dyn Fn(Size) -> Element<'a, Message, Theme, Renderer>,
|
||||
) {
|
||||
let is_tree_empty =
|
||||
tree.tag == tree::Tag::stateless() && tree.children.is_empty();
|
||||
if self.size != new_size {
|
||||
self.element = view(new_size);
|
||||
self.size = new_size;
|
||||
self.layout = None;
|
||||
|
||||
if !is_tree_empty && self.size == new_size {
|
||||
return;
|
||||
tree.diff(&self.element);
|
||||
} else {
|
||||
let is_tree_empty =
|
||||
tree.tag == tree::Tag::stateless() && tree.children.is_empty();
|
||||
|
||||
if is_tree_empty {
|
||||
self.layout = None;
|
||||
tree.diff(&self.element);
|
||||
}
|
||||
}
|
||||
|
||||
self.element = view(new_size);
|
||||
self.size = new_size;
|
||||
self.layout = None;
|
||||
|
||||
tree.diff(&self.element);
|
||||
}
|
||||
|
||||
fn resolve<R, T>(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue