From 9256b21d4a6d147129f3e9035e9972bff5911e98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 2 Jul 2021 17:08:41 +0400 Subject: [PATCH] Listen for absolute-changed property MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- qemu-rdw/src/display_qemu.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/qemu-rdw/src/display_qemu.rs b/qemu-rdw/src/display_qemu.rs index 041de37..c4fc549 100644 --- a/qemu-rdw/src/display_qemu.rs +++ b/qemu-rdw/src/display_qemu.rs @@ -8,7 +8,6 @@ use rdw::DisplayExt; mod imp { use super::*; - use futures_util::future::FutureExt; use gtk::subclass::prelude::*; use std::{convert::TryInto, os::unix::io::IntoRawFd}; @@ -205,11 +204,20 @@ mod imp { }) ); - // console.mouse.connect_is_absolute_changed(clone!(@strong widget => @default-panic, move |v| { - // widget.set_mouse_absolute(v.map_or(true, |v| v.try_into().unwrap_or(true))); - // async move { - // }.boxed() - // })).await.unwrap(); + let mut abs_changed = console.mouse.receive_is_absolute_changed().await; + MainContext::default().spawn_local(clone!(@weak widget => async move { + use futures_util::StreamExt; + + while let Some(abs) = abs_changed.next().await { + dbg!(&abs); + let abs = if let Some(abs) = abs { + abs.try_into().unwrap_or(false) + } else { + continue; + }; + widget.set_mouse_absolute(abs); + } + })); loop { if let Err(e) = console.dispatch_signals().await {