diff options
author | der richter <der.richter@gmx.de> | 2024-03-14 22:35:45 +0100 |
---|---|---|
committer | der richter <der.richter@gmx.de> | 2024-03-16 15:29:27 +0100 |
commit | 2a36ed9abd6f1dc77cdd5e7d06a22a02b970a43c (patch) | |
tree | c224766c376ecae5067c10a18db11da2220cdf42 | |
parent | a4eddf742d04a05af76eba378ed1b6868d7c970d (diff) | |
download | mpv-2a36ed9abd6f1dc77cdd5e7d06a22a02b970a43c.tar.bz2 mpv-2a36ed9abd6f1dc77cdd5e7d06a22a02b970a43c.tar.xz |
mac/input: optimise scroll wheel event handling
-rw-r--r-- | osdep/mac/input_helper.swift | 53 |
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 } |