diff --git a/src/backend/producer/wayland.rs b/src/backend/producer/wayland.rs index 9e15fb3..17429d7 100644 --- a/src/backend/producer/wayland.rs +++ b/src/backend/producer/wayland.rs @@ -712,6 +712,13 @@ impl Dispatch for State { app.pending_events.push_back((*client, Event::Enter())); } wl_pointer::Event::Leave { .. } => { + /* There are rare cases, where when a window is opened in + * just the wrong moment, the pointer is released, while + * still grabbed. + * In that case, the pointer must be ungrabbed, otherwise + * it is impossible to grab it again (since the pointer + * lock, relative pointer,... objects are still in place) + */ app.ungrab(); } wl_pointer::Event::Button { diff --git a/src/server.rs b/src/server.rs index 2b2270b..79ccb3c 100644 --- a/src/server.rs +++ b/src/server.rs @@ -131,7 +131,6 @@ impl Server { tokio::select! { event = producer.next() => { let event = event.ok_or(anyhow!("event producer closed"))??; - log::debug!("producer event: {event:?}"); server.handle_producer_event(&mut producer, &sender_ch, &timer_ch, event).await?; } e = producer_notify_rx.recv() => {