diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-11 10:30:51 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-11 10:30:51 +0400 |
| commit | 6d9cfe28823e88df68f172496c928bd366777ad1 (patch) | |
| tree | aa420fffb4f8f6b89d2d7bf81b6c6ab2c5e24fa0 /src/input.rs | |
| parent | de0ad857112384dbba0198bbd4481b2fd61204e3 (diff) | |
| download | niri-6d9cfe28823e88df68f172496c928bd366777ad1.tar.gz niri-6d9cfe28823e88df68f172496c928bd366777ad1.tar.bz2 niri-6d9cfe28823e88df68f172496c928bd366777ad1.zip | |
Don't start a resize if edges is empty
Diffstat (limited to 'src/input.rs')
| -rw-r--r-- | src/input.rs | 86 |
1 files changed, 44 insertions, 42 deletions
diff --git a/src/input.rs b/src/input.rs index ccae9397..e30655ec 100644 --- a/src/input.rs +++ b/src/input.rs @@ -1095,51 +1095,53 @@ impl State { .resize_edges_under(output, pos_within_output) .unwrap(); - // See if we got a double resize-click gesture. - // FIXME: deduplicate with resize_request in xdg-shell somehow. - let time = get_monotonic_time(); - let last_cell = mapped.last_interactive_resize_start(); - let last = last_cell.get(); - last_cell.set(Some((time, edges))); - let mut did_gesture = false; - if let Some((last_time, last_edges)) = last { - if time.saturating_sub(last_time) <= DOUBLE_CLICK_TIME { - let intersection = edges.intersection(last_edges); - if intersection.intersects(ResizeEdge::LEFT_RIGHT) { - // FIXME: don't activate once we can pass specific windows to - // actions. - self.niri.layout.activate_window(&window); - self.niri.layout.toggle_full_width(); + if !edges.is_empty() { + // See if we got a double resize-click gesture. + // FIXME: deduplicate with resize_request in xdg-shell somehow. + let time = get_monotonic_time(); + let last_cell = mapped.last_interactive_resize_start(); + let last = last_cell.get(); + last_cell.set(Some((time, edges))); + let mut did_gesture = false; + if let Some((last_time, last_edges)) = last { + if time.saturating_sub(last_time) <= DOUBLE_CLICK_TIME { + let intersection = edges.intersection(last_edges); + if intersection.intersects(ResizeEdge::LEFT_RIGHT) { + // FIXME: don't activate once we can pass specific windows + // to actions. + self.niri.layout.activate_window(&window); + self.niri.layout.toggle_full_width(); + } + if intersection.intersects(ResizeEdge::TOP_BOTTOM) { + // FIXME: don't activate once we can pass specific windows + // to actions. + self.niri.layout.activate_window(&window); + self.niri.layout.reset_window_height(); + } + did_gesture = true; } - if intersection.intersects(ResizeEdge::TOP_BOTTOM) { - // FIXME: don't activate once we can pass specific windows to - // actions. - self.niri.layout.activate_window(&window); - self.niri.layout.reset_window_height(); - } - did_gesture = true; } - } - self.niri.layout.activate_window(&window); - - if !did_gesture - && self - .niri - .layout - .interactive_resize_begin(window.clone(), edges) - { - let start_data = PointerGrabStartData { - focus: None, - button: event.button_code(), - location, - }; - let grab = ResizeGrab::new(start_data, window.clone()); - pointer.set_grab(self, grab, serial, Focus::Clear); - self.niri.interactive_resize_ongoing = true; - self.niri - .cursor_manager - .set_cursor_image(CursorImageStatus::Named(edges.cursor_icon())); + self.niri.layout.activate_window(&window); + + if !did_gesture + && self + .niri + .layout + .interactive_resize_begin(window.clone(), edges) + { + let start_data = PointerGrabStartData { + focus: None, + button: event.button_code(), + location, + }; + let grab = ResizeGrab::new(start_data, window.clone()); + pointer.set_grab(self, grab, serial, Focus::Clear); + self.niri.interactive_resize_ongoing = true; + self.niri.cursor_manager.set_cursor_image( + CursorImageStatus::Named(edges.cursor_icon()), + ); + } } } } |
