diff options
author | der richter <der.richter@gmx.de> | 2024-03-14 23:58:10 +0100 |
---|---|---|
committer | der richter <der.richter@gmx.de> | 2024-03-16 15:29:27 +0100 |
commit | a4eddf742d04a05af76eba378ed1b6868d7c970d (patch) | |
tree | 1a9f3dddd9b5bffd1f5ebc204d19e3778e3bb81a | |
parent | 9a4c673dd7994e46cc7f3768d05519c1411af8ba (diff) | |
download | mpv-a4eddf742d04a05af76eba378ed1b6868d7c970d.tar.bz2 mpv-a4eddf742d04a05af76eba378ed1b6868d7c970d.tar.xz |
mac/input: move scroll wheel event handling into input helper
-rw-r--r-- | osdep/mac/input_helper.swift | 45 | ||||
-rw-r--r-- | video/out/mac/view.swift | 36 |
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 { |