summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--widget/src/button.rs7
-rw-r--r--widget/src/lazy/responsive.rs23
2 files changed, 16 insertions, 14 deletions
diff --git a/widget/src/button.rs b/widget/src/button.rs
index 64f2b793..9eac2e4c 100644
--- a/widget/src/button.rs
+++ b/widget/src/button.rs
@@ -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;
}
diff --git a/widget/src/lazy/responsive.rs b/widget/src/lazy/responsive.rs
index a8abbce8..f9bd0334 100644
--- a/widget/src/lazy/responsive.rs
+++ b/widget/src/lazy/responsive.rs
@@ -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;
- }
-
- self.element = view(new_size);
- self.size = new_size;
- self.layout = None;
+ tree.diff(&self.element);
+ } else {
+ let is_tree_empty =
+ tree.tag == tree::Tag::stateless() && tree.children.is_empty();
- tree.diff(&self.element);
+ if is_tree_empty {
+ self.layout = None;
+ tree.diff(&self.element);
+ }
+ }
}
fn resolve<R, T>(