summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2019-12-01 21:08:54 +0100
committerder richter <der.richter@gmx.de>2019-12-15 20:07:11 +0100
commitf21a980e374b46c978cec0d99145777653f4caca (patch)
tree54ba33824ad58c5a11b20ff6dfcb4753c0dc1340
parentc8cc203735d73f62def2692d1027f45ac10c03db (diff)
downloadmpv-f21a980e374b46c978cec0d99145777653f4caca.tar.bz2
mpv-f21a980e374b46c978cec0d99145777653f4caca.tar.xz
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
-rw-r--r--osdep/macos/mpv_helper.swift5
-rw-r--r--video/out/cocoa-cb/window.swift21
-rw-r--r--video/out/cocoa_cb_common.swift30
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<Int8>(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)