From f21a980e374b46c978cec0d99145777653f4caca Mon Sep 17 00:00:00 2001 From: der richter Date: Sun, 1 Dec 2019 21:08:54 +0100 Subject: cocoa-cb: update and add more options to use new options handling this updates and add the maximized, minimized, keepaspect and ontop options to use the new options handling --- osdep/macos/mpv_helper.swift | 5 +++++ video/out/cocoa-cb/window.swift | 21 +++++++++++++++++++++ video/out/cocoa_cb_common.swift | 30 ++++++++++++++++++++---------- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/osdep/macos/mpv_helper.swift b/osdep/macos/mpv_helper.swift index 5e97470a09..00c34924e3 100644 --- a/osdep/macos/mpv_helper.swift +++ b/osdep/macos/mpv_helper.swift @@ -90,6 +90,11 @@ class MPVHelper: LogHelper { m_config_cache_write_opt(optsCachePtr, UnsafeMutableRawPointer(&optsPtr.pointee.window_minimized)) } + func setConfigProperty(maximized: Bool) { + optsPtr.pointee.window_maximized = Int32(maximized) + m_config_cache_write_opt(optsCachePtr, UnsafeMutableRawPointer(&optsPtr.pointee.window_maximized)) + } + func command(_ cmd: String) { let cCmd = UnsafePointer(strdup(cmd)) let mpvCmd = mp_input_parse_cmd(input, bstr0(cCmd), "") diff --git a/video/out/cocoa-cb/window.swift b/video/out/cocoa-cb/window.swift index 48f3210a22..94f80e59b4 100644 --- a/video/out/cocoa-cb/window.swift +++ b/video/out/cocoa-cb/window.swift @@ -272,6 +272,22 @@ class Window: NSWindow, NSWindowDelegate { } } + func setMinimized(_ stateWanted: Bool) { + if isMiniaturized == stateWanted { return } + + if stateWanted { + performMiniaturize(self) + } else { + deminiaturize(self) + } + } + + func setMaximized(_ stateWanted: Bool) { + if isZoomed == stateWanted { return } + + zoom(self) + } + func updateMovableBackground(_ pos: NSPoint) { if !isInFullscreen { isMovableByWindowBackground = mpv?.canBeDraggedAt(pos) ?? true @@ -466,6 +482,7 @@ class Window: NSWindow, NSWindowDelegate { func windowDidEndLiveResize(_ notification: Notification) { cocoaCB.layer?.inLiveResize = false + cocoaCB.mpv?.setConfigProperty(maximized: isZoomed) } func windowShouldClose(_ sender: NSWindow) -> Bool { @@ -498,4 +515,8 @@ class Window: NSWindow, NSWindowDelegate { func windowWillMove(_ notification: Notification) { isMoving = true } + + func windowDidMove(_ notification: Notification) { + cocoaCB.mpv?.setConfigProperty(maximized: isZoomed) + } } diff --git a/video/out/cocoa_cb_common.swift b/video/out/cocoa_cb_common.swift index aa1315fbbf..6e016812ab 100644 --- a/video/out/cocoa_cb_common.swift +++ b/video/out/cocoa_cb_common.swift @@ -58,8 +58,6 @@ class CocoaCB: NSObject { super.init() layer = VideoLayer(cocoaCB: self) - libmpv.observeFlag("ontop") - libmpv.observeFlag("keepaspect-window") libmpv.observeString("macos-title-bar-style") libmpv.observeString("macos-title-bar-appearance") libmpv.observeString("macos-title-bar-material") @@ -459,6 +457,26 @@ class CocoaCB: NSObject { ccb.window?.toggleFullScreen(nil) } } + if opt! == UnsafeMutableRawPointer(&mpv.optsPtr.pointee.ontop) { + DispatchQueue.main.async { + ccb.window?.setOnTop(Bool(mpv.opts.ontop), Int(mpv.opts.ontop_level)) + } + } + if opt! == UnsafeMutableRawPointer(&mpv.optsPtr.pointee.keepaspect_window) { + DispatchQueue.main.async { + ccb.window?.keepAspect = Bool(mpv.opts.keepaspect_window) + } + } + if opt! == UnsafeMutableRawPointer(&mpv.optsPtr.pointee.window_minimized) { + DispatchQueue.main.async { + ccb.window?.setMinimized(Bool(mpv.opts.window_minimized)) + } + } + if opt! == UnsafeMutableRawPointer(&mpv.optsPtr.pointee.window_maximized) { + DispatchQueue.main.async { + ccb.window?.setMaximized(Bool(mpv.opts.window_maximized)) + } + } } return VO_TRUE case VOCTRL_GET_DISPLAY_FPS: @@ -574,14 +592,6 @@ class CocoaCB: NSObject { } switch String(cString: property.name) { - case "ontop": - if let data = LibmpvHelper.mpvFlagToBool(property.data) { - window?.setOnTop(data, Int(mpv?.opts.ontop_level ?? -1)) - } - case "keepaspect-window": - if let data = LibmpvHelper.mpvFlagToBool(property.data) { - window?.keepAspect = data - } case "macos-title-bar-appearance": if let data = LibmpvHelper.mpvStringArrayToString(property.data) { titleBar?.set(appearance: data) -- cgit v1.2.3