1 | use super::*; |
2 | use x11rb::x11_utils::Serialize; |
3 | |
4 | impl XConnection { |
5 | pub fn send_client_msg( |
6 | &self, |
7 | window: xproto::Window, // The window this is "about"; not necessarily this window |
8 | target_window: xproto::Window, // The window we're sending to |
9 | message_type: xproto::Atom, |
10 | event_mask: Option<xproto::EventMask>, |
11 | data: impl Into<xproto::ClientMessageData>, |
12 | ) -> Result<VoidCookie<'_>, X11Error> { |
13 | let event = xproto::ClientMessageEvent { |
14 | response_type: xproto::CLIENT_MESSAGE_EVENT, |
15 | window, |
16 | format: 32, |
17 | data: data.into(), |
18 | sequence: 0, |
19 | type_: message_type, |
20 | }; |
21 | |
22 | self.xcb_connection() |
23 | .send_event( |
24 | false, |
25 | target_window, |
26 | event_mask.unwrap_or(xproto::EventMask::NO_EVENT), |
27 | event.serialize(), |
28 | ) |
29 | .map_err(Into::into) |
30 | } |
31 | } |
32 | |