Skip to content

Commit 6141c4d

Browse files
committed
Fix for appearance overlay appearing on wrong screen when the correct screen has a fullscreen space
We're already checking for this, but an old timer that isn't really needed anymore was bypassing this and showing the panel. For good measure, we add an extra check as well
1 parent 2e0abd9 commit 6141c4d

File tree

3 files changed

+11
-18
lines changed

3 files changed

+11
-18
lines changed

Diff for: Ice/MenuBarAppearance/MenuBarAppearanceManager.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import OSLog
1212
final class MenuBarAppearanceManager: ObservableObject {
1313
@Published var configuration: MenuBarAppearanceConfiguration = .defaultConfiguration
1414

15-
@Published private(set) var canEditAppearance = true
15+
@Published private(set) var canChangeAppearance = true
1616

1717
private var cancellables = Set<AnyCancellable>()
1818

@@ -77,7 +77,7 @@ final class MenuBarAppearanceManager: ObservableObject {
7777
else {
7878
return
7979
}
80-
canEditAppearance = !isMenuBarHidden
80+
canChangeAppearance = !isMenuBarHidden
8181
}
8282
.store(in: &c)
8383

Diff for: Ice/MenuBarAppearance/MenuBarOverlayPanel.swift

+7-14
Original file line numberDiff line numberDiff line change
@@ -169,17 +169,6 @@ class MenuBarOverlayPanel: NSPanel {
169169
}
170170
.store(in: &c)
171171

172-
// make sure the panel switches to the active space
173-
Timer.publish(every: 2.5, on: .main, in: .default)
174-
.autoconnect()
175-
.sink { [weak self] _ in
176-
guard let self, !isOnActiveSpace else {
177-
return
178-
}
179-
needsShow = true
180-
}
181-
.store(in: &c)
182-
183172
// continually update the desktop wallpaper; ideally, we would set up
184173
// an observer for a wallpaper change notification, but macOS doesn't
185174
// post one anymore; updating every 5 seconds at least keeps the CPU
@@ -234,8 +223,8 @@ class MenuBarOverlayPanel: NSPanel {
234223

235224
if let appState {
236225
appState.menuBarManager.$isMenuBarHiddenBySystem
237-
.sink { [weak self] isHandled in
238-
self?.alphaValue = isHandled ? 0 : 1
226+
.sink { [weak self] isHidden in
227+
self?.alphaValue = isHidden ? 0 : 1
239228
}
240229
.store(in: &c)
241230
}
@@ -255,15 +244,19 @@ class MenuBarOverlayPanel: NSPanel {
255244
case .showing: "Preventing overlay panel from showing."
256245
case .updates: "Preventing overlay panel from updating."
257246
}
258-
let owningDisplay = owningScreen.displayID
259247
guard let appState else {
260248
Logger.overlayPanel.notice("No app state. \(actionMessage)")
261249
return nil
262250
}
251+
guard appState.menuBarManager.appearanceManager.canChangeAppearance else {
252+
Logger.overlayPanel.notice("Appearance manager cannot change appearance. \(actionMessage)")
253+
return nil
254+
}
263255
guard !appState.isActiveSpaceFullscreen else {
264256
Logger.overlayPanel.notice("Active space is fullscreen. \(actionMessage)")
265257
return nil
266258
}
259+
let owningDisplay = owningScreen.displayID
267260
guard AccessibilityMenuBar.hasValidMenuBar(for: owningDisplay) else {
268261
Logger.overlayPanel.notice("No valid menu bar found. \(actionMessage)")
269262
return nil

Diff for: Ice/Settings/SettingsPanes/MenuBarAppearanceSettingsPane/MenuBarAppearanceEditor.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ struct MenuBarAppearanceEditor: View {
3535

3636
@ViewBuilder
3737
private var stackBody: some View {
38-
if appearanceManager.canEditAppearance {
38+
if appearanceManager.canChangeAppearance {
3939
mainForm
4040
} else {
4141
cannotEdit
@@ -46,7 +46,7 @@ struct MenuBarAppearanceEditor: View {
4646
private var stackFooter: some View {
4747
HStack {
4848
if
49-
appearanceManager.canEditAppearance,
49+
appearanceManager.canChangeAppearance,
5050
appearanceManager.configuration != .defaultConfiguration
5151
{
5252
Button("Reset") {

0 commit comments

Comments
 (0)