Check cursor is in-bounds before resizing panes

This commit is contained in:
Héctor Ramón Jiménez 2020-03-20 11:53:08 +01:00
parent 31aaf207d6
commit 33f33ed4e3

View File

@ -467,6 +467,8 @@ where
&& self.pressed_modifiers.matches(self.modifier_keys) => && self.pressed_modifiers.matches(self.modifier_keys) =>
{ {
let bounds = layout.bounds(); let bounds = layout.bounds();
if bounds.contains(cursor_position) {
let relative_cursor = Point::new( let relative_cursor = Point::new(
cursor_position.x - bounds.x, cursor_position.x - bounds.x,
cursor_position.y - bounds.y, cursor_position.y - bounds.y,
@ -493,7 +495,8 @@ where
}) })
.collect(); .collect();
sorted_splits.sort_by_key(|(_, (axis, rectangle, ratio))| { sorted_splits.sort_by_key(
|(_, (axis, rectangle, ratio))| {
let distance = match axis { let distance = match axis {
Axis::Horizontal => (relative_cursor.y Axis::Horizontal => (relative_cursor.y
- (rectangle.y + rectangle.height * ratio)) - (rectangle.y + rectangle.height * ratio))
@ -504,13 +507,15 @@ where
}; };
distance.round() as u32 distance.round() as u32
}); },
);
if let Some((split, (axis, _, _))) = sorted_splits.first() { if let Some((split, (axis, _, _))) = sorted_splits.first() {
self.state.pick_split(split, *axis); self.state.pick_split(split, *axis);
self.trigger_resize(layout, cursor_position, messages); self.trigger_resize(layout, cursor_position, messages);
} }
} }
}
Event::Mouse(mouse::Event::Input { Event::Mouse(mouse::Event::Input {
button: mouse::Button::Right, button: mouse::Button::Right,
state: ButtonState::Released, state: ButtonState::Released,