From 4652a2329417f89c49cdfaf4ad9cd0c4d6ed1c5d Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Fri, 28 Jun 2024 11:25:20 +0200 Subject: [PATCH] grabs: Fix ssd not updating during move grab --- src/shell/mod.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/shell/mod.rs b/src/shell/mod.rs index b0126b21..6b62d352 100644 --- a/src/shell/mod.rs +++ b/src/shell/mod.rs @@ -1,4 +1,5 @@ use calloop::LoopHandle; +use grabs::SeatMoveGrabState; use indexmap::IndexMap; use std::{ collections::HashMap, @@ -1137,8 +1138,23 @@ impl Common { } pub fn on_commit(&mut self, surface: &WlSurface) { - if let Some(mapped) = self.shell.read().unwrap().element_for_surface(surface) { - mapped.on_commit(surface); + { + let shell = self.shell.read().unwrap(); + + for seat in shell.seats.iter() { + if let Some(move_grab) = seat.user_data().get::() { + if let Some(grab_state) = move_grab.lock().unwrap().as_ref() { + let mapped = grab_state.element(); + if mapped.active_window().wl_surface().as_deref() == Some(surface) { + mapped.on_commit(surface); + } + } + } + } + + if let Some(mapped) = shell.element_for_surface(surface) { + mapped.on_commit(surface); + } } self.popups.commit(surface); }