mirror of
https://github.com/mpv-player/mpv.git
synced 2025-12-28 05:33:14 +00:00
mac: implement VOCTRL_BEGIN_DRAGGING
this removes the old isMovableByWindowBackground mechanism with the newer performDrag(with:) function.
This commit is contained in:
@@ -1558,8 +1558,9 @@ Miscellaneous Commands
|
||||
Begin window dragging if supported by the current VO. This command should
|
||||
only be called while a mouse button is being pressed, otherwise it will
|
||||
be ignored. The exact effect of this command depends on the VO implementation
|
||||
of window dragging. For example, on Windows only the left mouse button can
|
||||
begin window dragging, while X11 and Wayland allow other mouse buttons.
|
||||
of window dragging. For example, on Windows and macOS only the left mouse
|
||||
button can begin window dragging, while X11 and Wayland allow other mouse
|
||||
buttons.
|
||||
|
||||
``context-menu``
|
||||
Show context menu on the video window. See `Context Menu`_ section for details.
|
||||
|
||||
@@ -139,8 +139,6 @@ class Common: NSObject {
|
||||
DispatchQueue.main.async {
|
||||
self.window?.toggleFullScreen(nil)
|
||||
}
|
||||
} else {
|
||||
window?.isMovableByWindowBackground = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -647,6 +645,9 @@ class Common: NSObject {
|
||||
self.title = title
|
||||
}
|
||||
return VO_TRUE
|
||||
case VOCTRL_BEGIN_DRAGGING:
|
||||
self.window?.startDragging()
|
||||
return VO_TRUE
|
||||
default:
|
||||
return VO_NOTIMPL
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ class View: NSView, CALayerDelegate {
|
||||
|
||||
var tracker: NSTrackingArea?
|
||||
var hasMouseDown: Bool = false
|
||||
var lastMouseDownEvent: NSEvent?
|
||||
|
||||
override var isFlipped: Bool { return true }
|
||||
override var acceptsFirstResponder: Bool { return true }
|
||||
@@ -137,6 +138,7 @@ class View: NSView, CALayerDelegate {
|
||||
override func mouseDown(with event: NSEvent) {
|
||||
hasMouseDown = event.clickCount <= 1
|
||||
input?.processMouse(event: event)
|
||||
lastMouseDownEvent = event
|
||||
}
|
||||
|
||||
override func mouseUp(with event: NSEvent) {
|
||||
@@ -176,7 +178,6 @@ class View: NSView, CALayerDelegate {
|
||||
point = convertToBacking(point)
|
||||
point.y = -point.y
|
||||
|
||||
common.window?.updateMovableBackground(point)
|
||||
if !(common.window?.isMoving ?? false) {
|
||||
input?.setMouse(position: point)
|
||||
}
|
||||
|
||||
@@ -332,11 +332,13 @@ class Window: NSWindow, NSWindowDelegate {
|
||||
zoom(self)
|
||||
}
|
||||
|
||||
func updateMovableBackground(_ pos: NSPoint) {
|
||||
if !isInFullscreen {
|
||||
isMovableByWindowBackground = input?.draggable(at: pos) ?? true
|
||||
} else {
|
||||
isMovableByWindowBackground = false
|
||||
func startDragging() {
|
||||
guard let view = common.view, let event = view.lastMouseDownEvent else { return }
|
||||
var pos = view.convert(event.locationInWindow, from: nil)
|
||||
pos = convertPointToBacking(pos)
|
||||
|
||||
if input?.draggable(at: pos) ?? true {
|
||||
performDrag(with: event)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user