diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/src/element.rs | 8 | ||||
| -rw-r--r-- | core/src/overlay.rs | 13 | ||||
| -rw-r--r-- | core/src/overlay/element.rs | 41 | ||||
| -rw-r--r-- | core/src/overlay/group.rs | 16 | ||||
| -rw-r--r-- | core/src/widget.rs | 3 | 
5 files changed, 21 insertions, 60 deletions
| diff --git a/core/src/element.rs b/core/src/element.rs index 71d0d873..8eea90ca 100644 --- a/core/src/element.rs +++ b/core/src/element.rs @@ -446,11 +446,12 @@ where          tree: &'b mut Tree,          layout: Layout<'_>,          renderer: &Renderer, +        translation: Vector,      ) -> Option<overlay::Element<'b, B, Theme, Renderer>> {          let mapper = &self.mapper;          self.widget -            .overlay(tree, layout, renderer) +            .overlay(tree, layout, renderer, translation)              .map(move |overlay| overlay.map(mapper))      }  } @@ -596,7 +597,10 @@ where          state: &'b mut Tree,          layout: Layout<'_>,          renderer: &Renderer, +        translation: Vector,      ) -> Option<overlay::Element<'b, Message, Theme, Renderer>> { -        self.element.widget.overlay(state, layout, renderer) +        self.element +            .widget +            .overlay(state, layout, renderer, translation)      }  } diff --git a/core/src/overlay.rs b/core/src/overlay.rs index 6b8cf2a6..03076a30 100644 --- a/core/src/overlay.rs +++ b/core/src/overlay.rs @@ -24,13 +24,7 @@ where      /// user interface.      ///      /// [`Node`]: layout::Node -    fn layout( -        &mut self, -        renderer: &Renderer, -        bounds: Size, -        position: Point, -        translation: Vector, -    ) -> layout::Node; +    fn layout(&mut self, renderer: &Renderer, bounds: Size) -> layout::Node;      /// Draws the [`Overlay`] using the associated `Renderer`.      fn draw( @@ -120,6 +114,7 @@ pub fn from_children<'a, Message, Theme, Renderer>(      tree: &'a mut Tree,      layout: Layout<'_>,      renderer: &Renderer, +    translation: Vector,  ) -> Option<Element<'a, Message, Theme, Renderer>>  where      Renderer: crate::Renderer, @@ -129,7 +124,9 @@ where          .zip(&mut tree.children)          .zip(layout.children())          .filter_map(|((child, state), layout)| { -            child.as_widget_mut().overlay(state, layout, renderer) +            child +                .as_widget_mut() +                .overlay(state, layout, renderer, translation)          })          .collect::<Vec<_>>(); diff --git a/core/src/overlay/element.rs b/core/src/overlay/element.rs index c34ab862..695b88b3 100644 --- a/core/src/overlay/element.rs +++ b/core/src/overlay/element.rs @@ -12,8 +12,6 @@ use std::any::Any;  /// A generic [`Overlay`].  #[allow(missing_debug_implementations)]  pub struct Element<'a, Message, Theme, Renderer> { -    position: Point, -    translation: Vector,      overlay: Box<dyn Overlay<Message, Theme, Renderer> + 'a>,  } @@ -23,26 +21,9 @@ where  {      /// Creates a new [`Element`] containing the given [`Overlay`].      pub fn new( -        position: Point,          overlay: Box<dyn Overlay<Message, Theme, Renderer> + 'a>,      ) -> Self { -        Self { -            position, -            overlay, -            translation: Vector::ZERO, -        } -    } - -    /// Returns the position of the [`Element`]. -    pub fn position(&self) -> Point { -        self.position -    } - -    /// Translates the [`Element`]. -    pub fn translate(mut self, translation: Vector) -> Self { -        self.position = self.position + translation; -        self.translation = self.translation + translation; -        self +        Self { overlay }      }      /// Applies a transformation to the produced message of the [`Element`]. @@ -57,8 +38,6 @@ where          B: 'a,      {          Element { -            position: self.position, -            translation: self.translation,              overlay: Box::new(Map::new(self.overlay, f)),          }      } @@ -68,14 +47,8 @@ where          &mut self,          renderer: &Renderer,          bounds: Size, -        translation: Vector,      ) -> layout::Node { -        self.overlay.layout( -            renderer, -            bounds, -            self.position + translation, -            self.translation + translation, -        ) +        self.overlay.layout(renderer, bounds)      }      /// Processes a runtime [`Event`]. @@ -165,14 +138,8 @@ impl<'a, A, B, Theme, Renderer> Overlay<B, Theme, Renderer>  where      Renderer: crate::Renderer,  { -    fn layout( -        &mut self, -        renderer: &Renderer, -        bounds: Size, -        position: Point, -        translation: Vector, -    ) -> layout::Node { -        self.content.layout(renderer, bounds, position, translation) +    fn layout(&mut self, renderer: &Renderer, bounds: Size) -> layout::Node { +        self.content.layout(renderer, bounds)      }      fn operate( diff --git a/core/src/overlay/group.rs b/core/src/overlay/group.rs index 4e54a002..7e4bebd0 100644 --- a/core/src/overlay/group.rs +++ b/core/src/overlay/group.rs @@ -4,9 +4,7 @@ use crate::mouse;  use crate::overlay;  use crate::renderer;  use crate::widget; -use crate::{ -    Clipboard, Event, Layout, Overlay, Point, Rectangle, Shell, Size, Vector, -}; +use crate::{Clipboard, Event, Layout, Overlay, Point, Rectangle, Shell, Size};  /// An [`Overlay`] container that displays multiple overlay [`overlay::Element`]  /// children. @@ -44,7 +42,7 @@ where      /// Turns the [`Group`] into an overlay [`overlay::Element`].      pub fn overlay(self) -> overlay::Element<'a, Message, Theme, Renderer> { -        overlay::Element::new(Point::ORIGIN, Box::new(self)) +        overlay::Element::new(Box::new(self))      }  } @@ -65,18 +63,12 @@ impl<'a, Message, Theme, Renderer> Overlay<Message, Theme, Renderer>  where      Renderer: crate::Renderer,  { -    fn layout( -        &mut self, -        renderer: &Renderer, -        bounds: Size, -        _position: Point, -        translation: Vector, -    ) -> layout::Node { +    fn layout(&mut self, renderer: &Renderer, bounds: Size) -> layout::Node {          layout::Node::with_children(              bounds,              self.children                  .iter_mut() -                .map(|child| child.layout(renderer, bounds, translation)) +                .map(|child| child.layout(renderer, bounds))                  .collect(),          )      } diff --git a/core/src/widget.rs b/core/src/widget.rs index d5e2ec6f..51326f12 100644 --- a/core/src/widget.rs +++ b/core/src/widget.rs @@ -15,7 +15,7 @@ use crate::layout::{self, Layout};  use crate::mouse;  use crate::overlay;  use crate::renderer; -use crate::{Clipboard, Length, Rectangle, Shell, Size}; +use crate::{Clipboard, Length, Rectangle, Shell, Size, Vector};  /// A component that displays information and allows interaction.  /// @@ -146,6 +146,7 @@ where          _state: &'a mut Tree,          _layout: Layout<'_>,          _renderer: &Renderer, +        _translation: Vector,      ) -> Option<overlay::Element<'a, Message, Theme, Renderer>> {          None      } | 
