diff --git a/src/input/touch/mod.rs b/src/input/touch/mod.rs index 0360263..f64781f 100644 --- a/src/input/touch/mod.rs +++ b/src/input/touch/mod.rs @@ -58,6 +58,14 @@ impl TouchHandler for AppData let pos = self.surface( focus ).to_physical( position.0, position.1 ); self.pointer_pos = pos; + // Compositor re-grab after the origin surface died mid-drag: this + // slot is already our primary and the drag state was migrated here, + // so treat the redundant `down` as a continuation, not a restart. + if self.surface( focus ).primary_touch_id == Some( id ) + { + return; + } + // Auxiliary slot path: a second (or third…) finger arriving // while another finger already drives the primary slot stays // out of the single-slot gesture machine entirely. The app