fix: fully hide title bar including traffic lights

- Hide close/minimize/zoom buttons on startup
- Show all buttons + title on hover, hide on exit
- Use asyncAfter to ensure window is ready
- Find visible window instead of first window
- Enable window drag by background when title bar hidden
This commit is contained in:
yumoqing 2026-06-30 23:49:32 +08:00
parent 03b8ef8d40
commit 5a031a57ea

View File

@ -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
}
}
}