summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-04-13 06:28:33 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-04-13 06:28:33 +0200
commit28b0f7abf46ba6f6250e883104a6100e3e647172 (patch)
treecfab991626b9cfd57ffaee7421718b2f4de77d6b /native
parentdfc1868179d96236ddf2a9eb590832d810afb6c3 (diff)
downloadiced-28b0f7abf46ba6f6250e883104a6100e3e647172.tar.gz
iced-28b0f7abf46ba6f6250e883104a6100e3e647172.tar.bz2
iced-28b0f7abf46ba6f6250e883104a6100e3e647172.zip
Delegate `layout` directly to `content` in `MouseListener`
Diffstat (limited to '')
-rw-r--r--native/src/widget/mouse_listener.rs59
1 files changed, 11 insertions, 48 deletions
diff --git a/native/src/widget/mouse_listener.rs b/native/src/widget/mouse_listener.rs
index 0add7c71..c4e91cba 100644
--- a/native/src/widget/mouse_listener.rs
+++ b/native/src/widget/mouse_listener.rs
@@ -11,8 +11,6 @@ use crate::{
Clipboard, Element, Layout, Length, Point, Rectangle, Shell, Widget,
};
-use std::u32;
-
/// Emit messages on mouse events.
#[allow(missing_debug_implementations)]
pub struct MouseListener<'a, Message, Renderer> {
@@ -151,17 +149,7 @@ where
renderer: &Renderer,
limits: &layout::Limits,
) -> layout::Node {
- layout(
- renderer,
- limits,
- Widget::<Message, Renderer>::width(self),
- Widget::<Message, Renderer>::height(self),
- u32::MAX,
- u32::MAX,
- |renderer, limits| {
- self.content.as_widget().layout(renderer, limits)
- },
- )
+ self.content.as_widget().layout(renderer, limits)
}
fn operate(
@@ -171,14 +159,12 @@ where
renderer: &Renderer,
operation: &mut dyn Operation<Message>,
) {
- operation.container(None, &mut |operation| {
- self.content.as_widget().operate(
- &mut tree.children[0],
- layout.children().next().unwrap(),
- renderer,
- operation,
- );
- });
+ self.content.as_widget().operate(
+ &mut tree.children[0],
+ layout,
+ renderer,
+ operation,
+ );
}
fn on_event(
@@ -194,7 +180,7 @@ where
if let event::Status::Captured = self.content.as_widget_mut().on_event(
&mut tree.children[0],
event.clone(),
- layout.children().next().unwrap(),
+ layout,
cursor_position,
renderer,
clipboard,
@@ -223,7 +209,7 @@ where
) -> mouse::Interaction {
self.content.as_widget().mouse_interaction(
&tree.children[0],
- layout.children().next().unwrap(),
+ layout,
cursor_position,
viewport,
renderer,
@@ -245,7 +231,7 @@ where
renderer,
theme,
renderer_style,
- layout.children().next().unwrap(),
+ layout,
cursor_position,
viewport,
);
@@ -259,7 +245,7 @@ where
) -> Option<overlay::Element<'b, Message, Renderer>> {
self.content.as_widget_mut().overlay(
&mut tree.children[0],
- layout.children().next().unwrap(),
+ layout,
renderer,
)
}
@@ -378,26 +364,3 @@ fn update<Message: Clone, Renderer>(
event::Status::Ignored
}
-
-/// Computes the layout of a [`MouseListener`].
-pub fn layout<Renderer>(
- renderer: &Renderer,
- limits: &layout::Limits,
- width: Length,
- height: Length,
- max_height: u32,
- max_width: u32,
- layout_content: impl FnOnce(&Renderer, &layout::Limits) -> layout::Node,
-) -> layout::Node {
- let limits = limits
- .loose()
- .max_height(max_height)
- .max_width(max_width)
- .width(width)
- .height(height);
-
- let content = layout_content(renderer, &limits);
- let size = limits.resolve(content.size());
-
- layout::Node::with_children(size, vec![content])
-}