From 435a761d226d905e4acecd969d098d3ab5b1c0d8 Mon Sep 17 00:00:00 2001 From: Tri Vo Khac Date: Wed, 15 Jul 2026 13:37:59 +0700 Subject: [PATCH] fix(hammerspoon): refresh highlight after window changes --- .../.hammerspoon/modules/window_highlight.lua | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/hammerspoon/.hammerspoon/modules/window_highlight.lua b/hammerspoon/.hammerspoon/modules/window_highlight.lua index f8762f8..360d2d8 100644 --- a/hammerspoon/.hammerspoon/modules/window_highlight.lua +++ b/hammerspoon/.hammerspoon/modules/window_highlight.lua @@ -200,7 +200,21 @@ function WindowHighlight:watchFocusedWindowLive() if not win then return end self.liveWindowWatcher = win:newWatcher(function(_, event) - if event == hs.uielement.watcher.windowMoved + if event == hs.uielement.watcher.elementDestroyed then + if self.liveWindowWatcher then + self.liveWindowWatcher:stop() + self.liveWindowWatcher = nil + end + + self.watchedWindowId = nil + self.currentFrame = nil + self:hide() + + hs.timer.doAfter(0.05, function() + self:watchFocusedWindowLive() + self:update(true) + end) + elseif event == hs.uielement.watcher.windowMoved or event == hs.uielement.watcher.windowResized then self:update(true) end @@ -275,6 +289,8 @@ function WindowHighlight:start() if windowId ~= self.lastPolledWindowId then self.lastPolledWindowId = windowId self.lastPolledFrame = win and win:frame() or nil + self:watchFocusedWindowLive() + self:update(true) return end