summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2024-03-14 22:35:45 +0100
committerder richter <der.richter@gmx.de>2024-03-16 15:29:27 +0100
commit2a36ed9abd6f1dc77cdd5e7d06a22a02b970a43c (patch)
treec224766c376ecae5067c10a18db11da2220cdf42
parenta4eddf742d04a05af76eba378ed1b6868d7c970d (diff)
downloadmpv-2a36ed9abd6f1dc77cdd5e7d06a22a02b970a43c.tar.bz2
mpv-2a36ed9abd6f1dc77cdd5e7d06a22a02b970a43c.tar.xz
mac/input: optimise scroll wheel event handling
-rw-r--r--osdep/mac/input_helper.swift53
1 files changed, 18 insertions, 35 deletions
diff --git a/osdep/mac/input_helper.swift b/osdep/mac/input_helper.swift
index 1c626d2e6d..9cc7c9f4e5 100644
--- a/osdep/mac/input_helper.swift
+++ b/osdep/mac/input_helper.swift
@@ -125,40 +125,28 @@ 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)
+ guard let input = input else { return }
+ let modifiers = event.modifierFlags
+ let precise = event.hasPreciseScrollingDeltas
+ var deltaX = event.deltaX * 0.1
+ var deltaY = event.deltaY * 0.1
+
+ if !precise {
+ deltaX = modifiers.contains(.shift) ? event.scrollingDeltaY : event.scrollingDeltaX
+ deltaY = modifiers.contains(.shift) ? event.scrollingDeltaX : event.scrollingDeltaY
}
+
+ var key = deltaY > 0 ? SWIFT_WHEEL_UP : SWIFT_WHEEL_DOWN
+ var delta = Double(deltaY)
+ if abs(deltaX) > abs(deltaY) {
+ key = deltaX > 0 ? SWIFT_WHEEL_LEFT : SWIFT_WHEEL_RIGHT
+ delta = Double(deltaX)
+ }
+
+ mp_input_put_wheel(input, key | mapModifier(modifiers), precise ? abs(delta) : 1)
}
}
@@ -184,11 +172,6 @@ class InputHelper: NSObject {
}
}
- 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 {
lock.withLock {
guard let input = input else { return false }