diff options
author | 2021-11-22 13:36:30 +0700 | |
---|---|---|
committer | 2021-11-22 13:36:30 +0700 | |
commit | 71685a13508711ea14baf69f6ffdaf977c3b240a (patch) | |
tree | 0c73407e5d4ee3ba4f62df66574113fd212b66fb /native | |
parent | e2ec824678cfddc0309f06711e5a5cf036fc3261 (diff) | |
parent | 77aa05afd3cdc7034ddedd394c49b47cc20d56ae (diff) | |
download | iced-71685a13508711ea14baf69f6ffdaf977c3b240a.tar.gz iced-71685a13508711ea14baf69f6ffdaf977c3b240a.tar.bz2 iced-71685a13508711ea14baf69f6ffdaf977c3b240a.zip |
Merge pull request #1124 from iced-rs/fix/pane-grid-mouse-interaction
Fix implementation of `Widget::mouse_interaction` for `PaneGrid`
Diffstat (limited to 'native')
-rw-r--r-- | native/src/widget/pane_grid.rs | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index 20616ed4..3637822b 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -481,10 +481,33 @@ where return mouse::Interaction::Grab; } - if let Some((_, axis)) = self.state.picked_split() { - return match axis { - Axis::Horizontal => mouse::Interaction::ResizingHorizontally, - Axis::Vertical => mouse::Interaction::ResizingVertically, + let resize_axis = + self.state.picked_split().map(|(_, axis)| axis).or_else(|| { + self.on_resize.as_ref().and_then(|(leeway, _)| { + let bounds = layout.bounds(); + + let splits = self + .state + .split_regions(f32::from(self.spacing), bounds.size()); + + let relative_cursor = Point::new( + cursor_position.x - bounds.x, + cursor_position.y - bounds.y, + ); + + hovered_split( + splits.iter(), + f32::from(self.spacing + leeway), + relative_cursor, + ) + .map(|(_, axis, _)| axis) + }) + }); + + if let Some(resize_axis) = resize_axis { + return match resize_axis { + Axis::Horizontal => mouse::Interaction::ResizingVertically, + Axis::Vertical => mouse::Interaction::ResizingHorizontally, }; } |