0
0
mirror of https://github.com/mpv-player/mpv.git synced 2024-09-20 03:52:22 +02:00

mac/input: optimise scroll wheel event handling

This commit is contained in:
der richter 2024-03-14 22:35:45 +01:00
parent a4eddf742d
commit 2a36ed9abd

View File

@ -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) { func processWheel(event: NSEvent) {
if !mouseEnabled() { return } if !mouseEnabled() { return }
lock.withLock { lock.withLock {
if event.hasPreciseScrollingDeltas { guard let input = input else { return }
preciseScroll(event) let modifiers = event.modifierFlags
} else { let precise = event.hasPreciseScrollingDeltas
let modifiers = event.modifierFlags var deltaX = event.deltaX * 0.1
let deltaX = modifiers.contains(.shift) ? event.scrollingDeltaY : event.scrollingDeltaX var deltaY = event.deltaY * 0.1
let deltaY = modifiers.contains(.shift) ? event.scrollingDeltaX : event.scrollingDeltaY
var mpkey: Int32
if abs(deltaY) >= abs(deltaX) { if !precise {
mpkey = deltaY > 0 ? SWIFT_WHEEL_UP : SWIFT_WHEEL_DOWN deltaX = modifiers.contains(.shift) ? event.scrollingDeltaY : event.scrollingDeltaX
} else { deltaY = modifiers.contains(.shift) ? event.scrollingDeltaX : event.scrollingDeltaY
mpkey = deltaX > 0 ? SWIFT_WHEEL_LEFT : SWIFT_WHEEL_RIGHT
}
putKey(mpkey, modifiers: modifiers)
} }
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 { @discardableResult @objc func command(_ cmd: String) -> Bool {
lock.withLock { lock.withLock {
guard let input = input else { return false } guard let input = input else { return false }