Handle focus changes correctly on lock - refocus the "focused" window

This commit is contained in:
bluepython508
2026-02-12 16:31:39 +00:00
parent 9d882886ec
commit bdd32a8a6d

View File

@@ -211,12 +211,11 @@
(defn seat/focus [seat window]
(defn focus-window [window]
(unless (= (seat :focused) window)
(:focus-window (seat :obj) (window :obj))
(put seat :focused window)
(set (wm :render-order) (filter |(not (= $ window)) (wm :render-order)))
(array/push (wm :render-order) window)
(:place-top (window :node))))
(:focus-window (seat :obj) (window :obj))
(put seat :focused window)
(set (wm :render-order) (filter |(not (= $ window)) (wm :render-order)))
(array/push (wm :render-order) window)
(:place-top (window :node)))
(defn clear-focus []
(when (seat :focused)
(:clear-focus (seat :obj))
@@ -287,6 +286,9 @@
(if (or (not (seat :focused-output)) ((seat :focused-output) :removed))
(seat/focus-output seat (first (wm :outputs))))
(when (not= (seat :layer-focus) :non-exclusive)
(seat/focus seat (seat :focused)))
(seat/focus seat nil)
(if-let [window (seat :window-interaction)]