git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commit3ba0cf3fc6ff85f97a51c7c2005dd44369381716
parent63cc6c655b
authorLucas Galante <[email protected]>
date2026-06-16 12:44
fix(focus): protect non-window focus from layout autofocus stealing

 src/server/window_manager.rs | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/server/window_manager.rs b/src/server/window_manager.rs
index 97de8fa..8e294c3 100644
--- a/src/server/window_manager.rs
+++ b/src/server/window_manager.rs
@@ -1094,8 +1094,16 @@ impl WindowManager {
             let next_seat = (*curr_seat).next;
             let seat = crate::container_of!(curr_seat, crate::seat::Seat, link);
             let mut focused_visible = false;
-            if let crate::seat::Focus::Window(w) = (*seat).focused {
-                if !w.is_null() && !(*w).closed && !(*w).minimized && ((*w).tags & self.active_tags) != 0 {
+            match (*seat).focused {
+                crate::seat::Focus::Window(w) => {
+                    if !w.is_null() && !(*w).closed && !(*w).minimized && ((*w).tags & self.active_tags) != 0 {
+                        focused_visible = true;
+                    }
+                }
+                crate::seat::Focus::None => {
+                    focused_visible = false;
+                }
+                _ => {
                     focused_visible = true;
                 }
             }