From 0e0059fab5d21af91a32b418fbf91efdfb6734d6 Mon Sep 17 00:00:00 2001 From: Neko Asakura Date: Fri, 13 Dec 2024 06:48:37 +1000 Subject: [PATCH] mac: fix unexpected return of forcePosition Int32(VO_WIN_FORCE_POS) == 1, regardless of `--force-window-position` --- video/out/mac/common.swift | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/video/out/mac/common.swift b/video/out/mac/common.swift index 1eaee3b23342b..fc44846d66c8d 100644 --- a/video/out/mac/common.swift +++ b/video/out/mac/common.swift @@ -75,7 +75,7 @@ class Common: NSObject { } func initWindow(_ vo: UnsafeMutablePointer, _ previousActiveApp: NSRunningApplication?) { - let (targetScreen, wr, _) = getInitProperties(vo) + let (targetScreen, wr, forcePosition) = getInitProperties(vo) guard let view = self.view else { log.error("Something went wrong, no View was initialized") @@ -104,6 +104,12 @@ class Common: NSObject { window.setMinimized(minimized) window.makeMain() window.makeKey() + window.isMovable = !forcePosition + if forcePosition { + NSEvent.addLocalMonitorForEvents(matching: [.leftMouseDragged]) { [weak self] event in + return nil + } + } view.layer?.contentsScale = window.backingScaleFactor @@ -411,6 +417,7 @@ class Common: NSObject { func getWindowGeometry(forScreen screen: NSScreen, videoOut vo: UnsafeMutablePointer) -> (NSRect, Bool) { + let option = OptionHelper(vo, vo.pointee.global) let r = screen.convertRectToBacking(screen.frame) let targetFrame = option.mac.macos_geometry_calculation == FRAME_VISIBLE ? screen.visibleFrame : screen.frame @@ -437,7 +444,7 @@ class Common: NSObject { let y = CGFloat(-geo.win.y1) let x = CGFloat(geo.win.x0) let wr = screen.convertRectFromBacking(NSRect(x: x, y: y, width: width, height: height)) - return (wr, Bool(geo.flags & Int32(VO_WIN_FORCE_POS))) + return (wr, Bool(geo.flags & Int32(option.vo.force_window_position))) } func getInitProperties(_ vo: UnsafeMutablePointer) -> (NSScreen, NSRect, Bool) {