From 2c5c32ad4e9e9cf5f97af43b8f0912e8afef949e Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 10 Apr 2024 20:29:22 -0700 Subject: [PATCH] shell: Fix resize grab unsetting --- src/shell/layout/floating/grabs/resize.rs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/shell/layout/floating/grabs/resize.rs b/src/shell/layout/floating/grabs/resize.rs index 0c2d23ac..0354baf3 100644 --- a/src/shell/layout/floating/grabs/resize.rs +++ b/src/shell/layout/floating/grabs/resize.rs @@ -162,12 +162,14 @@ impl PointerGrab for ResizeSurfaceGrab { match self.release { ReleaseMode::NoMouseButtons => { if handle.current_pressed().is_empty() { - self.ungrab(data, handle, event.serial, event.time); + self.ungrab(); + handle.unset_grab(data, event.serial, event.time, true); } } ReleaseMode::Click => { if event.state == ButtonState::Pressed { - self.ungrab(data, handle, event.serial, event.time); + self.ungrab(); + handle.unset_grab(data, event.serial, event.time, true); } } } @@ -286,6 +288,7 @@ impl TouchGrab for ResizeSurfaceGrab { seq: Serial, ) { if event.slot == >::start_data(self).slot { + self.ungrab(); handle.unset_grab(data); } @@ -314,6 +317,7 @@ impl TouchGrab for ResizeSurfaceGrab { } fn cancel(&mut self, data: &mut State, handle: &mut TouchInnerHandle<'_, State>, _seq: Serial) { + self.ungrab(); handle.unset_grab(data); } @@ -456,13 +460,7 @@ impl ResizeSurfaceGrab { } } - fn ungrab( - &mut self, - data: &mut State, - handle: &mut PointerInnerHandle<'_, State>, - serial: Serial, - time: u32, - ) { + fn ungrab(&mut self) { // No more buttons are pressed, release the grab. self.seat .user_data() @@ -470,7 +468,6 @@ impl ResizeSurfaceGrab { .unwrap() .0 .store(false, Ordering::SeqCst); - handle.unset_grab(data, serial, time, true); // If toplevel is dead, we can't resize it, so we return early. if !self.window.alive() {