diff --git a/video/out/mac/title_bar.swift b/video/out/mac/title_bar.swift index 623fe8f57d..e49c2bb99c 100644 --- a/video/out/mac/title_bar.swift +++ b/video/out/mac/title_bar.swift @@ -151,7 +151,7 @@ class TitleBar: NSVisualEffectView { } } - @objc func hide() { + @objc func hide(_ duration: TimeInterval = 0.20) { guard let window = common.window else { return } if window.isInFullscreen && !window.isAnimating { alphaValue = 0 @@ -159,7 +159,7 @@ class TitleBar: NSVisualEffectView { return } NSAnimationContext.runAnimationGroup({ (context) -> Void in - context.duration = 0.20 + context.duration = duration systemBar?.animator().alphaValue = 0 animator().alphaValue = 0 }, completionHandler: { diff --git a/video/out/mac/window.swift b/video/out/mac/window.swift index d692d0db91..a418f2ce75 100644 --- a/video/out/mac/window.swift +++ b/video/out/mac/window.swift @@ -163,22 +163,26 @@ class Window: NSWindow, NSWindowDelegate { NSAnimationContext.runAnimationGroup({ (context) -> Void in context.duration = getFsAnimationDuration(duration - 0.05) window.animator().setFrame(tScreen.frame, display: true) - }, completionHandler: { }) + }, completionHandler: nil) } func window(_ window: NSWindow, startCustomAnimationToExitFullScreenWithDuration duration: TimeInterval) { guard let tScreen = targetScreen, let currentScreen = screen else { return } let newFrame = calculateWindowPosition(for: tScreen, withoutBounds: tScreen == screen) let intermediateFrame = aspectFit(rect: newFrame, in: currentScreen.frame) - common.view?.layerContentsPlacement = .scaleProportionallyToFill - common.titleBar?.hide() - styleMask.remove(.fullScreen) - setFrame(intermediateFrame, display: true) + common.titleBar?.hide(0.0) NSAnimationContext.runAnimationGroup({ (context) -> Void in - context.duration = getFsAnimationDuration(duration - 0.05) - window.animator().setFrame(newFrame, display: true) - }, completionHandler: { }) + context.duration = 0.0 + common.view?.layerContentsPlacement = .scaleProportionallyToFill + window.animator().setFrame(intermediateFrame, display: true) + }, completionHandler: { + NSAnimationContext.runAnimationGroup({ (context) -> Void in + context.duration = self.getFsAnimationDuration(duration - 0.05) + self.styleMask.remove(.fullScreen) + window.animator().setFrame(newFrame, display: true) + }, completionHandler: nil) + }) } func windowDidEnterFullScreen(_ notification: Notification) {