diff options
author | 2023-04-13 06:28:33 +0200 | |
---|---|---|
committer | 2023-04-13 06:28:33 +0200 | |
commit | 28b0f7abf46ba6f6250e883104a6100e3e647172 (patch) | |
tree | cfab991626b9cfd57ffaee7421718b2f4de77d6b /native/src/widget | |
parent | dfc1868179d96236ddf2a9eb590832d810afb6c3 (diff) | |
download | iced-28b0f7abf46ba6f6250e883104a6100e3e647172.tar.gz iced-28b0f7abf46ba6f6250e883104a6100e3e647172.tar.bz2 iced-28b0f7abf46ba6f6250e883104a6100e3e647172.zip |
Delegate `layout` directly to `content` in `MouseListener`
Diffstat (limited to 'native/src/widget')
-rw-r--r-- | native/src/widget/mouse_listener.rs | 59 |
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]) -} |