blob: da3b81aaeab2871dc1b2fdf5dc5abebd014f3637 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
//! Event handlers for dealing with window focus.
use xcb::x::{EnterNotifyEvent, FocusInEvent, NotifyDetail, NotifyMode};
use crate::WM;
impl WM<'_> {
/// When a new window is entered, focus it.
pub fn handle_enter_notify(&mut self, e: &EnterNotifyEvent) {
if (e.mode() != NotifyMode::Normal || e.detail() == NotifyDetail::Inferior)
&& e.event() != self.conn.root()
{
return;
}
if let Some((mon, pos)) = self.clients.find_client_pos(e.event()) {
self.clients.refocus(&self.conn, mon, pos);
}
}
/// When a new window requests focus, focus it.
pub fn handle_focus_in(&mut self, e: &FocusInEvent) {
if !self.clients.is_focused(e.event()) {
if let Some((mon, pos)) = self.clients.find_client_pos(e.event()) {
self.clients.refocus(&self.conn, mon, pos);
}
}
}
}
|