diff options
Diffstat (limited to 'widget/src/pane_grid')
| -rw-r--r-- | widget/src/pane_grid/content.rs | 72 | ||||
| -rw-r--r-- | widget/src/pane_grid/draggable.rs | 6 | ||||
| -rw-r--r-- | widget/src/pane_grid/title_bar.rs | 18 | 
3 files changed, 49 insertions, 47 deletions
| diff --git a/widget/src/pane_grid/content.rs b/widget/src/pane_grid/content.rs index 035ef05b..c28ae6e3 100644 --- a/widget/src/pane_grid/content.rs +++ b/widget/src/pane_grid/content.rs @@ -95,7 +95,7 @@ where          theme: &Renderer::Theme,          style: &renderer::Style,          layout: Layout<'_>, -        cursor_position: Point, +        cursor: mouse::Cursor,          viewport: &Rectangle,      ) {          use container::StyleSheet; @@ -113,7 +113,7 @@ where              let title_bar_layout = children.next().unwrap();              let body_layout = children.next().unwrap(); -            let show_controls = bounds.contains(cursor_position); +            let show_controls = cursor.is_over(bounds);              self.body.as_widget().draw(                  &tree.children[0], @@ -121,7 +121,7 @@ where                  theme,                  style,                  body_layout, -                cursor_position, +                cursor,                  viewport,              ); @@ -131,7 +131,7 @@ where                  theme,                  style,                  title_bar_layout, -                cursor_position, +                cursor,                  viewport,                  show_controls,              ); @@ -142,7 +142,7 @@ where                  theme,                  style,                  layout, -                cursor_position, +                cursor,                  viewport,              );          } @@ -218,7 +218,7 @@ where          tree: &mut Tree,          event: Event,          layout: Layout<'_>, -        cursor_position: Point, +        cursor: mouse::Cursor,          renderer: &Renderer,          clipboard: &mut dyn Clipboard,          shell: &mut Shell<'_, Message>, @@ -233,7 +233,7 @@ where                  &mut tree.children[1],                  event.clone(),                  children.next().unwrap(), -                cursor_position, +                cursor,                  renderer,                  clipboard,                  shell, @@ -251,7 +251,7 @@ where                  &mut tree.children[0],                  event,                  body_layout, -                cursor_position, +                cursor,                  renderer,                  clipboard,                  shell, @@ -265,42 +265,48 @@ where          &self,          tree: &Tree,          layout: Layout<'_>, -        cursor_position: Point, +        cursor: mouse::Cursor,          viewport: &Rectangle,          renderer: &Renderer,          drag_enabled: bool,      ) -> mouse::Interaction { -        let (body_layout, title_bar_interaction) = -            if let Some(title_bar) = &self.title_bar { -                let mut children = layout.children(); -                let title_bar_layout = children.next().unwrap(); - -                let is_over_pick_area = title_bar -                    .is_over_pick_area(title_bar_layout, cursor_position); - -                if is_over_pick_area && drag_enabled { -                    return mouse::Interaction::Grab; -                } - -                let mouse_interaction = title_bar.mouse_interaction( -                    &tree.children[1], -                    title_bar_layout, -                    cursor_position, -                    viewport, -                    renderer, -                ); +        let (body_layout, title_bar_interaction) = if let Some(title_bar) = +            &self.title_bar +        { +            let mut children = layout.children(); +            let title_bar_layout = children.next().unwrap(); + +            let is_over_pick_area = cursor +                .position() +                .map(|cursor_position| { +                    title_bar +                        .is_over_pick_area(title_bar_layout, cursor_position) +                }) +                .unwrap_or_default(); + +            if is_over_pick_area && drag_enabled { +                return mouse::Interaction::Grab; +            } -                (children.next().unwrap(), mouse_interaction) -            } else { -                (layout, mouse::Interaction::default()) -            }; +            let mouse_interaction = title_bar.mouse_interaction( +                &tree.children[1], +                title_bar_layout, +                cursor, +                viewport, +                renderer, +            ); + +            (children.next().unwrap(), mouse_interaction) +        } else { +            (layout, mouse::Interaction::default()) +        };          self.body              .as_widget()              .mouse_interaction(                  &tree.children[0],                  body_layout, -                cursor_position, +                cursor,                  viewport,                  renderer,              ) diff --git a/widget/src/pane_grid/draggable.rs b/widget/src/pane_grid/draggable.rs index a9274dad..9d31feb5 100644 --- a/widget/src/pane_grid/draggable.rs +++ b/widget/src/pane_grid/draggable.rs @@ -4,9 +4,5 @@ use crate::core::{Layout, Point};  pub trait Draggable {      /// Returns whether the [`Draggable`] with the given [`Layout`] can be picked      /// at the provided cursor position. -    fn can_be_dragged_at( -        &self, -        layout: Layout<'_>, -        cursor_position: Point, -    ) -> bool; +    fn can_be_dragged_at(&self, layout: Layout<'_>, cursor: Point) -> bool;  } diff --git a/widget/src/pane_grid/title_bar.rs b/widget/src/pane_grid/title_bar.rs index 2129937b..2fe79f80 100644 --- a/widget/src/pane_grid/title_bar.rs +++ b/widget/src/pane_grid/title_bar.rs @@ -122,7 +122,7 @@ where          theme: &Renderer::Theme,          inherited_style: &renderer::Style,          layout: Layout<'_>, -        cursor_position: Point, +        cursor: mouse::Cursor,          viewport: &Rectangle,          show_controls: bool,      ) { @@ -158,7 +158,7 @@ where                      theme,                      &inherited_style,                      controls_layout, -                    cursor_position, +                    cursor,                      viewport,                  );              } @@ -171,7 +171,7 @@ where                  theme,                  &inherited_style,                  title_layout, -                cursor_position, +                cursor,                  viewport,              );          } @@ -300,7 +300,7 @@ where          tree: &mut Tree,          event: Event,          layout: Layout<'_>, -        cursor_position: Point, +        cursor: mouse::Cursor,          renderer: &Renderer,          clipboard: &mut dyn Clipboard,          shell: &mut Shell<'_, Message>, @@ -324,7 +324,7 @@ where                  &mut tree.children[1],                  event.clone(),                  controls_layout, -                cursor_position, +                cursor,                  renderer,                  clipboard,                  shell, @@ -338,7 +338,7 @@ where                  &mut tree.children[0],                  event,                  title_layout, -                cursor_position, +                cursor,                  renderer,                  clipboard,                  shell, @@ -354,7 +354,7 @@ where          &self,          tree: &Tree,          layout: Layout<'_>, -        cursor_position: Point, +        cursor: mouse::Cursor,          viewport: &Rectangle,          renderer: &Renderer,      ) -> mouse::Interaction { @@ -367,7 +367,7 @@ where          let title_interaction = self.content.as_widget().mouse_interaction(              &tree.children[0],              title_layout, -            cursor_position, +            cursor,              viewport,              renderer,          ); @@ -377,7 +377,7 @@ where              let controls_interaction = controls.as_widget().mouse_interaction(                  &tree.children[1],                  controls_layout, -                cursor_position, +                cursor,                  viewport,                  renderer,              ); | 
