diff options
author | Akemi <der.richter@gmx.de> | 2019-01-26 16:21:52 +0100 |
---|---|---|
committer | Jan Ekström <jeebjp@gmail.com> | 2019-04-02 02:01:02 +0300 |
commit | b207c1d4a1cb4e92af4ff17d0145b1adee39fc6c (patch) | |
tree | 161921f89bb31616df8b5d98eff74b50e92ca385 /video | |
parent | 9aa0905c10dcf2c9152b0cca7805070b111a6bb2 (diff) | |
download | mpv-b207c1d4a1cb4e92af4ff17d0145b1adee39fc6c.tar.bz2 mpv-b207c1d4a1cb4e92af4ff17d0145b1adee39fc6c.tar.xz |
cocoa-cb: fix a Cocoa window position on init bug
on init an NSWindow can't be placed on a none Main screen NSScreen
outside the Main screen's frame bounds.
To fix this we just check if the target screen is different from the
main screen and if that is the case we check the actual position with
the expect one. if they are different we try to reposition the window
to the wanted position.
Fixes #6453
Diffstat (limited to 'video')
-rw-r--r-- | video/out/cocoa-cb/window.swift | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/video/out/cocoa-cb/window.swift b/video/out/cocoa-cb/window.swift index ae59f8bb6f..26308c5563 100644 --- a/video/out/cocoa-cb/window.swift +++ b/video/out/cocoa-cb/window.swift @@ -107,6 +107,19 @@ class Window: NSWindow, NSWindowDelegate { self.init(contentRect: contentRect, styleMask: [.titled, .closable, .miniaturizable, .resizable], backing: .buffered, defer: false, screen: screen) + + // workaround for an AppKit bug where the NSWindow can't be placed on a + // none Main screen NSScreen outside the Main screen's frame bounds + if screen != NSScreen.main() { + var absoluteWantedOrigin = contentRect.origin + absoluteWantedOrigin.x += screen!.frame.origin.x + absoluteWantedOrigin.y += screen!.frame.origin.y + + if !NSEqualPoints(absoluteWantedOrigin, self.frame.origin) { + self.setFrameOrigin(absoluteWantedOrigin) + } + } + cocoaCB = ccb title = cocoaCB.title minSize = NSMakeSize(160, 90) |