Fixed inconsistencies with focus_target happening when not checking cookie

main
isark 2 years ago
parent 828f4b0355
commit f4858eba43

@ -1,6 +1,6 @@
[package] [package]
name = "Underlayer" name = "Underlayer"
version = "0.2.1" version = "0.2.2"
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

@ -5,8 +5,8 @@ use x11rb::{
connection::Connection, connection::Connection,
protocol::{ protocol::{
xproto::{ xproto::{
Atom, AtomEnum, ChangeWindowAttributesAux, self, Atom, AtomEnum, ChangeWindowAttributesAux, ClientMessageData, ClientMessageEvent,
ConnectionExt, EventMask, Window, InputFocus, ClientMessageData, ClientMessageEvent, self, ConnectionExt, EventMask, Window,
}, },
Event, Event,
}, },
@ -66,7 +66,6 @@ pub fn focus_target() {
if let Ok(target) = (*TARGET.load(std::sync::atomic::Ordering::SeqCst)).lock() { if let Ok(target) = (*TARGET.load(std::sync::atomic::Ordering::SeqCst)).lock() {
if *target != x11rb::NONE { if *target != x11rb::NONE {
if let Ok((conn, _screen_num)) = connect(None) { if let Ok((conn, _screen_num)) = connect(None) {
let net_active_window = get_atom(&conn, "_NET_ACTIVE_WINDOW").unwrap(); let net_active_window = get_atom(&conn, "_NET_ACTIVE_WINDOW").unwrap();
let event = ClientMessageEvent { let event = ClientMessageEvent {
@ -75,16 +74,20 @@ pub fn focus_target() {
sequence: 0, sequence: 0,
window: *target, window: *target,
type_: net_active_window, type_: net_active_window,
data: ClientMessageData::from([ data: ClientMessageData::from([1, x11rb::CURRENT_TIME, 0, 0, 0]),
1,
0,
0,
0,
0,
]),
}; };
conn.send_event(false, conn.setup().roots[_screen_num].root, EventMask::SUBSTRUCTURE_NOTIFY | EventMask::SUBSTRUCTURE_REDIRECT, event).ok(); if let Ok(cookie) = conn.send_event(
false,
conn.setup().roots[_screen_num].root,
EventMask::SUBSTRUCTURE_NOTIFY | EventMask::SUBSTRUCTURE_REDIRECT,
event,
) {
if let Err(e) = cookie.check() {
log::error!("Error focusing target: {e:?}");
}
}
conn.flush().ok(); conn.flush().ok();
} }
} }

Loading…
Cancel
Save