diff options
author | Akemi <der.richter@gmx.de> | 2017-07-27 21:28:33 +0200 |
---|---|---|
committer | Akemi <der.richter@gmx.de> | 2017-08-06 22:48:26 +0200 |
commit | f550fdaa91293fa1dd125b5743728c1d387d21c4 (patch) | |
tree | 5c506fbb24dc5421abf5f983019c98bcacd68e34 /video/out/cocoa/window.m | |
parent | 2b83f7e391ab68b23602e89b97ebc07ca09d8e7c (diff) | |
download | mpv-f550fdaa91293fa1dd125b5743728c1d387d21c4.tar.bz2 mpv-f550fdaa91293fa1dd125b5743728c1d387d21c4.tar.xz |
cocoa: add an option to disable the native macOS fullscreen
Fixes #4014
Diffstat (limited to 'video/out/cocoa/window.m')
-rw-r--r-- | video/out/cocoa/window.m | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/video/out/cocoa/window.m b/video/out/cocoa/window.m index 9b602436dd..e08f4745bc 100644 --- a/video/out/cocoa/window.m +++ b/video/out/cocoa/window.m @@ -106,7 +106,8 @@ [self setFrame:frame display:YES]; } - [super toggleFullScreen:sender]; + if ([self.adapter wantsNativeFullscreen]) + [super toggleFullScreen:sender]; if (![self.adapter isInFullScreenMode]) { [self setToFullScreen]; @@ -119,7 +120,16 @@ { [self setStyleMask:([self styleMask] | NSWindowStyleMaskFullScreen)]; NSRect frame = [[self targetScreen] frame]; - [self setFrame:frame display:YES]; + + if ([self.adapter wantsNativeFullscreen]) { + [self setFrame:frame display:YES]; + } else { + [NSApp setPresentationOptions:NSApplicationPresentationAutoHideMenuBar| + NSApplicationPresentationAutoHideDock]; + [self setFrame:frame display:YES]; + _is_animating = 0; + [self.adapter windowDidEnterFullScreen]; + } } - (void)setToWindow @@ -127,9 +137,19 @@ [self setStyleMask:([self styleMask] & ~NSWindowStyleMaskFullScreen)]; NSRect frame = [self calculateWindowPositionForScreen:[self targetScreen] withoutBounds:[[self targetScreen] isEqual:[self screen]]]; - [self setFrame:frame display:YES]; - [self setContentAspectRatio:_unfs_content_frame.size]; - [self setCenteredContentSize:_unfs_content_frame.size]; + + if ([self.adapter wantsNativeFullscreen]) { + [self setFrame:frame display:YES]; + [self setContentAspectRatio:_unfs_content_frame.size]; + [self setCenteredContentSize:_unfs_content_frame.size]; + } else { + [NSApp setPresentationOptions:NSApplicationPresentationDefault]; + [self setFrame:frame display:YES]; + [self setContentAspectRatio:_unfs_content_frame.size]; + [self setCenteredContentSize:_unfs_content_frame.size]; + _is_animating = 0; + [self.adapter windowDidExitFullScreen]; + } } - (NSArray *)customWindowsToEnterFullScreenForWindow:(NSWindow *)window @@ -150,13 +170,13 @@ - (void)windowDidEnterFullScreen:(NSNotification *)notification { _is_animating = 0; - [self.adapter windowDidEnterFullScreen:notification]; + [self.adapter windowDidEnterFullScreen]; } - (void)windowDidExitFullScreen:(NSNotification *)notification { _is_animating = 0; - [self.adapter windowDidExitFullScreen:notification]; + [self.adapter windowDidExitFullScreen]; } - (void)windowWillEnterFullScreen:(NSNotification *)notification @@ -390,7 +410,8 @@ if (NSMaxX(nf) < NSMinX(vf)) nf.origin.x = NSMinX(vf); - if (NSHeight(nf) < NSHeight(vf) && NSHeight(of) > NSHeight(vf)) + if (NSHeight(nf) < NSHeight(vf) && NSHeight(of) > NSHeight(vf) && + ![self.adapter isInFullScreenMode]) // If the window height is smaller than the visible frame, but it was // bigger previously recenter the smaller window vertically. This is // needed to counter the 'snap to top' behaviour. |