| @@ -125,6 +125,43 @@ class InputHelper: NSObject { · 124 unmodified lines |
| 125 | } | 125 | } |
| 126 | } | 126 | } |
| 127 | | 127 | |
| | 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 | |
| 128 | func draggable(at pos: NSPoint) -> Bool { | 165 | func draggable(at pos: NSPoint) -> Bool { |
| 129 | lock.withLock { | 166 | lock.withLock { |
| 130 | guard let input = input else { return false } | 167 | guard let input = input else { return false } |
| @@ -147,11 +184,9 @@ class InputHelper: NSObject { · 16 unmodified lines |
| 147 | } | 184 | } |
| 148 | } | 185 | } |
| 149 | | 186 | |
| 150 | func putAxis(_ mpkey: Int32, modifiers: NSEvent.ModifierFlags, delta: Double) { | 187 | private func putAxis(_ mpkey: Int32, modifiers: NSEvent.ModifierFlags, delta: Double) { |
| 151 | lock.withLock { | 188 | guard let input = input else { return } |
| 152 | guard let input = input else { return } | 189 | mp_input_put_wheel(input, mpkey | mapModifier(modifiers), delta) |
| 153 | mp_input_put_wheel(input, mpkey | mapModifier(modifiers), delta) | | |
| 154 | } | | |
| 155 | } | 190 | } |
| 156 | | 191 | |
| 157 | @discardableResult @objc func command(_ cmd: String) -> Bool { | 192 | @discardableResult @objc func command(_ cmd: String) -> Bool { |