History

mac/input: move scroll wheel event handling into input helper

der richter committed 2 years ago

Commit a4eddf71 parent 9a4c6732 files · +41 −40Browse files

Unified · Split

2 files
  1. osdep/mac/input_helper.swift +40 −5
  2. video/out/mac/view.swift +1 −35
osdep/mac/input_helper.swift+40−5
@@ -125,6 +125,43 @@ class InputHelper: NSObject { · 124 unmodified lines
125125 }
126126 }
127127
128+ private func preciseScroll(_ event: NSEvent) {
129+ var delta: Double
130+ var cmd: Int32
131+
132+ if abs(event.deltaY) >= abs(event.deltaX) {
133+ delta = Double(event.deltaY) * 0.1
134+ cmd = delta > 0 ? SWIFT_WHEEL_UP : SWIFT_WHEEL_DOWN
135+ } else {
136+ delta = Double(event.deltaX) * 0.1
137+ cmd = delta > 0 ? SWIFT_WHEEL_LEFT : SWIFT_WHEEL_RIGHT
138+ }
139+
140+ putAxis(cmd, modifiers: event.modifierFlags, delta: abs(delta))
141+ }
142+
143+ func processWheel(event: NSEvent) {
144+ if !mouseEnabled() { return }
145+ lock.withLock {
146+ if event.hasPreciseScrollingDeltas {
147+ preciseScroll(event)
148+ } else {
149+ let modifiers = event.modifierFlags
150+ let deltaX = modifiers.contains(.shift) ? event.scrollingDeltaY : event.scrollingDeltaX
151+ let deltaY = modifiers.contains(.shift) ? event.scrollingDeltaX : event.scrollingDeltaY
152+ var mpkey: Int32
153+
154+ if abs(deltaY) >= abs(deltaX) {
155+ mpkey = deltaY > 0 ? SWIFT_WHEEL_UP : SWIFT_WHEEL_DOWN
156+ } else {
157+ mpkey = deltaX > 0 ? SWIFT_WHEEL_LEFT : SWIFT_WHEEL_RIGHT
158+ }
159+
160+ putKey(mpkey, modifiers: modifiers)
161+ }
162+ }
163+ }
164+
128165 func draggable(at pos: NSPoint) -> Bool {
129166 lock.withLock {
130167 guard let input = input else { return false }
@@ -147,11 +184,9 @@ class InputHelper: NSObject { · 16 unmodified lines
147184 }
148185 }
149186
150− func putAxis(_ mpkey: Int32, modifiers: NSEvent.ModifierFlags, delta: Double) {
151− lock.withLock {
152− guard let input = input else { return }
153− mp_input_put_wheel(input, mpkey | mapModifier(modifiers), delta)
154− }
187+ private func putAxis(_ mpkey: Int32, modifiers: NSEvent.ModifierFlags, delta: Double) {
188+ guard let input = input else { return }
189+ mp_input_put_wheel(input, mpkey | mapModifier(modifiers), delta)
155190 }
156191
157192 @discardableResult @objc func command(_ cmd: String) -> Bool {
video/out/mac/view.swift+1−35
@@ -189,42 +189,8 @@ class View: NSView, CALayerDelegate { · 188 unmodified lines
189189 }
190190 }
191191
192− func preciseScroll(_ event: NSEvent) {
193− var delta: Double
194− var cmd: Int32
195−
196− if abs(event.deltaY) >= abs(event.deltaX) {
197− delta = Double(event.deltaY) * 0.1
198− cmd = delta > 0 ? SWIFT_WHEEL_UP : SWIFT_WHEEL_DOWN
199− } else {
200− delta = Double(event.deltaX) * 0.1
201− cmd = delta > 0 ? SWIFT_WHEEL_LEFT : SWIFT_WHEEL_RIGHT
202− }
203−
204− input?.putAxis(cmd, modifiers: event.modifierFlags, delta: abs(delta))
205− }
206−
207192 override func scrollWheel(with event: NSEvent) {
208− if !(input?.mouseEnabled() ?? true) {
209− return
210− }
211−
212− if event.hasPreciseScrollingDeltas {
213− preciseScroll(event)
214− } else {
215− let modifiers = event.modifierFlags
216− let deltaX = modifiers.contains(.shift) ? event.scrollingDeltaY : event.scrollingDeltaX
217− let deltaY = modifiers.contains(.shift) ? event.scrollingDeltaX : event.scrollingDeltaY
218− var mpkey: Int32
219−
220− if abs(deltaY) >= abs(deltaX) {
221− mpkey = deltaY > 0 ? SWIFT_WHEEL_UP : SWIFT_WHEEL_DOWN
222− } else {
223− mpkey = deltaX > 0 ? SWIFT_WHEEL_LEFT : SWIFT_WHEEL_RIGHT
224− }
225−
226− input?.put(key: mpkey, modifiers: modifiers)
227− }
193+ input?.processWheel(event: event)
228194 }
229195
230196 func containsMouseLocation() -> Bool {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t