summaryrefslogtreecommitdiffstats
path: root/osdep
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 /osdep
parent9a4c673dd7994e46cc7f3768d05519c1411af8ba (diff)
downloadmpv-a4eddf742d04a05af76eba378ed1b6868d7c970d.tar.bz2
mpv-a4eddf742d04a05af76eba378ed1b6868d7c970d.tar.xz
mac/input: move scroll wheel event handling into input helper
Diffstat (limited to 'osdep')
-rw-r--r--osdep/mac/input_helper.swift45
1 files changed, 40 insertions, 5 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 {