oxwm

https://git.tonybtw.com/oxwm.git git://git.tonybtw.com/oxwm.git

Attempting to fix focus stealing from fullscreen when modals open up.

Commit
04dfdb7ee7f08ee70a5de4c0fce8aae0b220b4d6
Parent
b025365
Author
tonybtw <tonybtw@tonybtw.com>
Date
2025-12-30 08:59:05

Diff

diff --git a/src/window_manager.rs b/src/window_manager.rs
index c175318..86920ce 100644
--- a/src/window_manager.rs
+++ b/src/window_manager.rs
@@ -2880,6 +2880,15 @@ impl WindowManager {
                 if event.mode != x11rb::protocol::xproto::NotifyMode::NORMAL {
                     return Ok(Control::Continue);
                 }
+                let selected_window = self
+                    .monitors
+                    .get(self.selected_monitor)
+                    .and_then(|m| m.selected_client);
+                if let Some(sel) = selected_window
+                    && self.fullscreen_windows.contains(&sel)
+                {
+                    return Ok(Control::Continue);
+                }
                 if self.windows.contains(&event.event) {
                     if let Some(client) = self.clients.get(&event.event)
                         && client.monitor_index != self.selected_monitor
@@ -2896,6 +2905,16 @@ impl WindowManager {
                     return Ok(Control::Continue);
                 }
 
+                let selected_window = self
+                    .monitors
+                    .get(self.selected_monitor)
+                    .and_then(|m| m.selected_client);
+                if let Some(sel) = selected_window
+                    && self.fullscreen_windows.contains(&sel)
+                {
+                    return Ok(Control::Continue);
+                }
+
                 if let Some(monitor_index) =
                     self.get_monitor_at_point(event.root_x as i32, event.root_y as i32)
                     && monitor_index != self.selected_monitor