From 6558230c9f438d4a0fe7c4f904bf3bd6f52b2540 Mon Sep 17 00:00:00 2001 From: Jeremy Fitzhardinge Date: Sat, 28 Dec 2019 22:52:10 -0800 Subject: [PATCH] Implment focus_change for X11 --- window/src/os/x11/connection.rs | 8 ++++++++ window/src/os/x11/window.rs | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/window/src/os/x11/connection.rs b/window/src/os/x11/connection.rs index 4476e1eed..eea20f602 100644 --- a/window/src/os/x11/connection.rs +++ b/window/src/os/x11/connection.rs @@ -124,6 +124,14 @@ fn window_id_from_event(event: &xcb::GenericEvent) -> Option { + let msg: &xcb::FocusInEvent = unsafe { xcb::cast_event(event) }; + Some(msg.event()) + } + xcb::FOCUS_OUT => { + let msg: &xcb::FocusOutEvent = unsafe { xcb::cast_event(event) }; + Some(msg.event()) + } _ => None, } } diff --git a/window/src/os/x11/window.rs b/window/src/os/x11/window.rs index 7c8ce0096..660b18b8f 100644 --- a/window/src/os/x11/window.rs +++ b/window/src/os/x11/window.rs @@ -374,6 +374,14 @@ impl XWindowInner { self.conn.atom_xsel_data ); } + xcb::FOCUS_IN => { + log::trace!("Calling focus_change(true)"); + self.callbacks.focus_change(true); + } + xcb::FOCUS_OUT => { + log::trace!("Calling focus_change(false)"); + self.callbacks.focus_change(false); + } _ => { eprintln!("unhandled: {:x}", r); }