Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 14 additions & 8 deletions video/out/mac/window.swift
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,11 @@ class Window: NSWindow, NSWindowDelegate {

// 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 let wantedScreen = screen, screen != NSScreen.main {
var absoluteWantedOrigin = contentRect.origin
absoluteWantedOrigin.x += wantedScreen.frame.origin.x
absoluteWantedOrigin.y += wantedScreen.frame.origin.y
if screen != NSScreen.main {
let absolutePos = absolutePosition(for: contentRect, screen: screen)

if absoluteWantedOrigin != self.frame.origin {
self.setFrameOrigin(absoluteWantedOrigin)
if absolutePos.origin != self.frame.origin {
self.setFrameOrigin(absolutePos.origin)
}
}

Expand Down Expand Up @@ -342,11 +340,11 @@ class Window: NSWindow, NSWindowDelegate {
}
}

func updateFrame(_ rect: NSRect) {
func updateFrame(_ rect: NSRect, _ screen: NSScreen? = nil) {
if rect != frame {
unfsContentFrame = rect
if !isInFullscreen {
let cRect = frameRect(forContentRect: rect)
let cRect = absolutePosition(for: frameRect(forContentRect: rect), screen: screen)
setFrame(cRect, display: true)
common.windowDidUpdateFrame()
}
Expand All @@ -371,6 +369,14 @@ class Window: NSWindow, NSWindowDelegate {
if keepAspect { contentAspectRatio = unfsContentFrame.size }
}

func absolutePosition(for rect: NSRect, screen: NSScreen?) -> NSRect {
guard let tScreen = screen else { return rect }
var absolutePosition = rect
absolutePosition.origin.x += tScreen.frame.origin.x
absolutePosition.origin.y += tScreen.frame.origin.y
return absolutePosition
}

func centeredContentSize(for rect: NSRect, size sz: NSSize) -> NSRect {
let cRect = contentRect(forFrameRect: rect)
let dx = (cRect.size.width - sz.width) / 2
Expand Down
4 changes: 2 additions & 2 deletions video/out/mac_common.swift
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class MacCommon: Common {
let previousActiveApp = getActiveApp()
initApp()

let (_, wr, forcePosition) = getInitProperties(vo)
let (screen, wr, forcePosition) = getInitProperties(vo)
guard let layer = self.layer else {
log.error("Something went wrong, no MetalLayer was initialized")
exit(1)
Expand All @@ -60,7 +60,7 @@ class MacCommon: Common {
}

if forcePosition {
window?.updateFrame(wr)
window?.updateFrame(wr, screen)
} else if option.vo.auto_window_resize {
window?.updateSize(wr.size)
}
Expand Down
Loading