From 2f592fb1f788ec556cfe95f2a536ef99fcc92b84 Mon Sep 17 00:00:00 2001 From: Jordan Baird Date: Thu, 4 Jul 2024 16:56:40 -0600 Subject: [PATCH] More efficient menu bar hidden check --- Ice/MenuBar/MenuBarManager.swift | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Ice/MenuBar/MenuBarManager.swift b/Ice/MenuBar/MenuBarManager.swift index 91f6c4ae..4dde95e3 100644 --- a/Ice/MenuBar/MenuBarManager.swift +++ b/Ice/MenuBar/MenuBarManager.swift @@ -104,18 +104,24 @@ final class MenuBarManager: ObservableObject { } .store(in: &c) - Timer.publish(every: 1, on: .main, in: .default) - .autoconnect() - .sink { [weak self] _ in - guard - let self, - let isMenuBarHidden = Defaults.globalDomain["_HIHideMenuBar"] as? Bool - else { - return + if + let hiddenSection = section(withName: .alwaysHidden), + let window = hiddenSection.controlItem.window + { + window.publisher(for: \.frame) + .map { $0.origin.y } + .removeDuplicates() + .sink { [weak self] _ in + guard + let self, + let isMenuBarHidden = Defaults.globalDomain["_HIHideMenuBar"] as? Bool + else { + return + } + isMenuBarHiddenBySystemUserDefaults = isMenuBarHidden } - isMenuBarHiddenBySystemUserDefaults = isMenuBarHidden - } - .store(in: &c) + .store(in: &c) + } // handle focusedApp rehide strategy NSWorkspace.shared.publisher(for: \.frontmostApplication)