diff options
Diffstat (limited to '')
| -rw-r--r-- | native/src/widget/pane_grid.rs | 46 | ||||
| -rw-r--r-- | native/src/widget/pane_grid/content.rs | 3 | 
2 files changed, 29 insertions, 20 deletions
| diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index d84fb7a0..96cf78ef 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -341,6 +341,7 @@ where                          cursor_position,                          viewport,                          renderer, +                        self.on_drag.is_some(),                      )                  })                  .max() @@ -648,7 +649,7 @@ pub fn mouse_interaction(      resize_leeway: Option<u16>,  ) -> Option<mouse::Interaction> {      if action.picked_pane().is_some() { -        return Some(mouse::Interaction::Grab); +        return Some(mouse::Interaction::Grabbing);      }      let resize_axis = @@ -756,27 +757,12 @@ pub fn draw<Renderer, T>(          cursor_position      }; +    let mut render_picked_pane = None; +      for ((id, pane), layout) in elements.zip(layout.children()) {          match picked_pane {              Some((dragging, origin)) if id == dragging => { -                let bounds = layout.bounds(); - -                renderer.with_translation( -                    cursor_position -                        - Point::new(bounds.x + origin.x, bounds.y + origin.y), -                    |renderer| { -                        renderer.with_layer(bounds, |renderer| { -                            draw_pane( -                                pane, -                                renderer, -                                default_style, -                                layout, -                                pane_cursor_position, -                                viewport, -                            ); -                        }); -                    }, -                ); +                render_picked_pane = Some((pane, origin, layout));              }              _ => {                  draw_pane( @@ -791,6 +777,28 @@ pub fn draw<Renderer, T>(          }      } +    // Render picked pane last +    if let Some((pane, origin, layout)) = render_picked_pane { +        let bounds = layout.bounds(); + +        renderer.with_translation( +            cursor_position +                - Point::new(bounds.x + origin.x, bounds.y + origin.y), +            |renderer| { +                renderer.with_layer(bounds, |renderer| { +                    draw_pane( +                        pane, +                        renderer, +                        default_style, +                        layout, +                        pane_cursor_position, +                        viewport, +                    ); +                }); +            }, +        ); +    }; +      if let Some((axis, split_region, is_picked)) = picked_split {          let highlight = if is_picked {              theme.picked_split(style) diff --git a/native/src/widget/pane_grid/content.rs b/native/src/widget/pane_grid/content.rs index 8d26c3d8..c236d820 100644 --- a/native/src/widget/pane_grid/content.rs +++ b/native/src/widget/pane_grid/content.rs @@ -238,6 +238,7 @@ where          cursor_position: Point,          viewport: &Rectangle,          renderer: &Renderer, +        drag_enabled: bool,      ) -> mouse::Interaction {          let (body_layout, title_bar_interaction) =              if let Some(title_bar) = &self.title_bar { @@ -247,7 +248,7 @@ where                  let is_over_pick_area = title_bar                      .is_over_pick_area(title_bar_layout, cursor_position); -                if is_over_pick_area { +                if is_over_pick_area && drag_enabled {                      return mouse::Interaction::Grab;                  } | 
