diff --git a/Sources/MiniPlayerApp.swift b/Sources/MiniPlayerApp.swift index cdf62e6..587fc85 100644 --- a/Sources/MiniPlayerApp.swift +++ b/Sources/MiniPlayerApp.swift @@ -319,10 +319,15 @@ struct PlayerContentView: View { } } .onAppear { - // 初始状态:标题栏完全隐藏 - if let win = NSApplication.shared.windows.first { + // 初始状态:标题栏完全隐藏(含红绿灯按钮) + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { + guard let win = NSApplication.shared.windows.first(where: { $0.isVisible }) else { return } win.titleVisibility = .hidden win.titlebarAppearsTransparent = true + win.isMovableByWindowBackground = true + win.standardWindowButton(.closeButton)?.isHidden = true + win.standardWindowButton(.miniaturizeButton)?.isHidden = true + win.standardWindowButton(.zoomButton)?.isHidden = true } } .onChange(of: showToolbar) { _, newValue in @@ -333,18 +338,24 @@ struct PlayerContentView: View { } } .overlay(alignment: .top) { - // 标题栏悬停检测:鼠标进入显示标题,退出隐藏 + // 标题栏悬停检测:鼠标进入显示标题栏,退出隐藏 Color.clear .frame(height: 28) .contentShape(Rectangle()) .onHover { hovering in - let win = NSApplication.shared.windows.first + guard let win = NSApplication.shared.windows.first(where: { $0.isVisible }) else { return } if hovering { - win?.titleVisibility = .visible - win?.titlebarAppearsTransparent = false + win.titlebarAppearsTransparent = false + win.titleVisibility = .visible + win.standardWindowButton(.closeButton)?.isHidden = false + win.standardWindowButton(.miniaturizeButton)?.isHidden = false + win.standardWindowButton(.zoomButton)?.isHidden = false } else { - win?.titleVisibility = .hidden - win?.titlebarAppearsTransparent = true + win.titleVisibility = .hidden + win.titlebarAppearsTransparent = true + win.standardWindowButton(.closeButton)?.isHidden = true + win.standardWindowButton(.miniaturizeButton)?.isHidden = true + win.standardWindowButton(.zoomButton)?.isHidden = true } } }