summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2024-03-14 23:58:10 +0100
committerder richter <der.richter@gmx.de>2024-03-16 15:29:27 +0100
commita4eddf742d04a05af76eba378ed1b6868d7c970d (patch)
tree1a9f3dddd9b5bffd1f5ebc204d19e3778e3bb81a
parent9a4c673dd7994e46cc7f3768d05519c1411af8ba (diff)
downloadmpv-a4eddf742d04a05af76eba378ed1b6868d7c970d.tar.bz2
mpv-a4eddf742d04a05af76eba378ed1b6868d7c970d.tar.xz
mac/input: move scroll wheel event handling into input helper
-rw-r--r--osdep/mac/input_helper.swift45
-rw-r--r--video/out/mac/view.swift36
2 files changed, 41 insertions, 40 deletions
diff --git a/osdep/mac/input_helper.swift b/osdep/mac/input_helper.swift
index c9891b7a7e..1c626d2e6d 100644
--- a/osdep/mac/input_helper.swift
+++ b/osdep/mac/input_helper.swift
@@ -125,6 +125,43 @@ class InputHelper: NSObject {
}
}
+ private func preciseScroll(_ event: NSEvent) {
+ var delta: Double
+ var cmd: Int32
+
+ if abs(event.deltaY) >= abs(event.deltaX) {
+ delta = Double(event.deltaY) * 0.1
+ cmd = delta > 0 ? SWIFT_WHEEL_UP : SWIFT_WHEEL_DOWN
+ } else {
+ delta = Double(event.deltaX) * 0.1
+ cmd = delta > 0 ? SWIFT_WHEEL_LEFT : SWIFT_WHEEL_RIGHT
+ }
+
+ putAxis(cmd, modifiers: event.modifierFlags, delta: abs(delta))
+ }
+
+ func processWheel(event: NSEvent) {
+ if !mouseEnabled() { return }
+ lock.withLock {
+ if event.hasPreciseScrollingDeltas {
+ preciseScroll(event)
+ } else {
+ let modifiers = event.modifierFlags
+ let deltaX = modifiers.contains(.shift) ? event.scrollingDeltaY : event.scrollingDeltaX
+ let deltaY = modifiers.contains(.shift) ? event.scrollingDeltaX : event.scrollingDeltaY
+ var mpkey: Int32
+
+ if abs(deltaY) >= abs(deltaX) {
+ mpkey = deltaY > 0 ? SWIFT_WHEEL_UP : SWIFT_WHEEL_DOWN
+ } else {
+ mpkey = deltaX > 0 ? SWIFT_WHEEL_LEFT : SWIFT_WHEEL_RIGHT
+ }
+
+ putKey(mpkey, modifiers: modifiers)
+ }
+ }
+ }
+
func draggable(at pos: NSPoint) -> Bool {
lock.withLock {
guard let input = input else { return false }
@@ -147,11 +184,9 @@ class InputHelper: NSObject {
}
}
- func putAxis(_ mpkey: Int32, modifiers: NSEvent.ModifierFlags, delta: Double) {
- lock.withLock {
- guard let input = input else { return }
- mp_input_put_wheel(input, mpkey | mapModifier(modifiers), delta)
- }
+ private func putAxis(_ mpkey: Int32, modifiers: NSEvent.ModifierFlags, delta: Double) {
+ guard let input = input else { return }
+ mp_input_put_wheel(input, mpkey | mapModifier(modifiers), delta)
}
@discardableResult @objc func command(_ cmd: String) -> Bool {
diff --git a/video/out/mac/view.swift b/video/out/mac/view.swift
index 3d2cd1c51b..0d94c2d096 100644
--- a/video/out/mac/view.swift
+++ b/video/out/mac/view.swift
@@ -189,42 +189,8 @@ class View: NSView, CALayerDelegate {
}
}
- func preciseScroll(_ event: NSEvent) {
- var delta: Double
- var cmd: Int32
-
- if abs(event.deltaY) >= abs(event.deltaX) {
- delta = Double(event.deltaY) * 0.1
- cmd = delta > 0 ? SWIFT_WHEEL_UP : SWIFT_WHEEL_DOWN
- } else {
- delta = Double(event.deltaX) * 0.1
- cmd = delta > 0 ? SWIFT_WHEEL_LEFT : SWIFT_WHEEL_RIGHT
- }
-
- input?.putAxis(cmd, modifiers: event.modifierFlags, delta: abs(delta))
- }
-
override func scrollWheel(with event: NSEvent) {
- if !(input?.mouseEnabled() ?? true) {
- return
- }
-
- if event.hasPreciseScrollingDeltas {
- preciseScroll(event)
- } else {
- let modifiers = event.modifierFlags
- let deltaX = modifiers.contains(.shift) ? event.scrollingDeltaY : event.scrollingDeltaX
- let deltaY = modifiers.contains(.shift) ? event.scrollingDeltaX : event.scrollingDeltaY
- var mpkey: Int32
-
- if abs(deltaY) >= abs(deltaX) {
- mpkey = deltaY > 0 ? SWIFT_WHEEL_UP : SWIFT_WHEEL_DOWN
- } else {
- mpkey = deltaX > 0 ? SWIFT_WHEEL_LEFT : SWIFT_WHEEL_RIGHT
- }
-
- input?.put(key: mpkey, modifiers: modifiers)
- }
+ input?.processWheel(event: event)
}
func containsMouseLocation() -> Bool {