History

mac/input: move mouse event handling into input helper

der richter committed 2 years ago

Commit db4eac11 parent ab419a62 files · +40 −47Browse files

Unified · Split

2 files
  1. osdep/mac/input_helper.swift +28 −0
  2. video/out/mac/view.swift +12 −47
osdep/mac/input_helper.swift+28−0
@@ -115,6 +115,16 @@ class InputHelper: NSObject { · 114 unmodified lines
115115 }
116116 }
117117
118+ func processMouse(event: NSEvent) {
119+ if !mouseEnabled() { return }
120+ lock.withLock {
121+ putKey(map(button: event.buttonNumber), modifiers: event.modifierFlags, type: event.type)
122+ if event.clickCount > 1 {
123+ putKey(map(button: event.buttonNumber), modifiers: event.modifierFlags, type: .keyUp)
124+ }
125+ }
126+ }
127+
118128 func draggable(at pos: NSPoint) -> Bool {
119129 lock.withLock {
120130 guard let input = input else { return false }
@@ -158,6 +168,12 @@ class InputHelper: NSObject { · 37 unmodified lines
158168 let typeMapping: [NSEvent.EventType:UInt32] = [
159169 .keyDown: MP_KEY_STATE_DOWN,
160170 .keyUp: MP_KEY_STATE_UP,
171+ .leftMouseDown: MP_KEY_STATE_DOWN,
172+ .leftMouseUp: MP_KEY_STATE_UP,
173+ .rightMouseDown: MP_KEY_STATE_DOWN,
174+ .rightMouseUp: MP_KEY_STATE_UP,
175+ .otherMouseDown: MP_KEY_STATE_DOWN,
176+ .otherMouseUp: MP_KEY_STATE_UP,
161177 ]
162178
163179 return Int32(typeMapping[type] ?? 0);
@@ -182,6 +198,18 @@ class InputHelper: NSObject { · 18 unmodified lines
182198 return Int32(mask)
183199 }
184200
201+ private func map(button: Int) -> Int32 {
202+ let buttonMapping: [Int:Int32] = [
203+ 0: SWIFT_MBTN_LEFT,
204+ 1: SWIFT_MBTN_RIGHT,
205+ 2: SWIFT_MBTN_MID,
206+ 3: SWIFT_MBTN_BACK,
207+ 4: SWIFT_MBTN_FORWARD,
208+ ]
209+
210+ return Int32(buttonMapping[button] ?? SWIFT_MBTN9 + Int32(button - 5));
211+ }
212+
185213 @objc func open(files: [String]) {
186214 lock.withLock {
187215 guard let input = input else { return }
video/out/mac/view.swift+12−47
@@ -145,40 +145,34 @@ class View: NSView, CALayerDelegate { · 144 unmodified lines
145145 }
146146
147147 override func mouseDown(with event: NSEvent) {
148− if input?.mouseEnabled() ?? true {
149− signalMouseDown(event)
150− }
148+ hasMouseDown = true
149+ input?.processMouse(event: event)
151150 }
152151
153152 override func mouseUp(with event: NSEvent) {
154− if input?.mouseEnabled() ?? true {
155− signalMouseUp(event)
156− }
153+ hasMouseDown = false
157154 common.window?.isMoving = false
155+ input?.processMouse(event: event)
158156 }
159157
160158 override func rightMouseDown(with event: NSEvent) {
161− if input?.mouseEnabled() ?? true {
162− signalMouseDown(event)
163− }
159+ hasMouseDown = true
160+ input?.processMouse(event: event)
164161 }
165162
166163 override func rightMouseUp(with event: NSEvent) {
167− if input?.mouseEnabled() ?? true {
168− signalMouseUp(event)
169− }
164+ hasMouseDown = false
165+ input?.processMouse(event: event)
170166 }
171167
172168 override func otherMouseDown(with event: NSEvent) {
173− if input?.mouseEnabled() ?? true {
174− signalMouseDown(event)
175− }
169+ hasMouseDown = true
170+ input?.processMouse(event: event)
176171 }
177172
178173 override func otherMouseUp(with event: NSEvent) {
179− if input?.mouseEnabled() ?? true {
180− signalMouseUp(event)
181− }
174+ hasMouseDown = false
175+ input?.processMouse(event: event)
182176 }
183177
184178 override func magnify(with event: NSEvent) {
@@ -188,23 +182,6 @@ class View: NSView, CALayerDelegate { · 3 unmodified lines
188182 common.window?.addWindowScale(Double(event.magnification))
189183 }
190184
191− func signalMouseDown(_ event: NSEvent) {
192− signalMouseEvent(event, MP_KEY_STATE_DOWN)
193− if event.clickCount > 1 {
194− signalMouseEvent(event, MP_KEY_STATE_UP)
195− }
196− }
197−
198− func signalMouseUp(_ event: NSEvent) {
199− signalMouseEvent(event, MP_KEY_STATE_UP)
200− }
201−
202− func signalMouseEvent(_ event: NSEvent, _ state: UInt32) {
203− hasMouseDown = state == MP_KEY_STATE_DOWN
204− let mpkey = getMpvButton(event)
205− input?.put(key: (mpkey | Int32(state)), modifiers: event.modifierFlags)
206− }
207−
208185 func signalMouseMovement(_ event: NSEvent) {
209186 var point = convert(event.locationInWindow, from: nil)
210187 point = convertToBacking(point)
@@ -283,16 +260,4 @@ class View: NSView, CALayerDelegate { · 72 unmodified lines
283260 guard let window = common.window else { return false }
284261 return !hasMouseDown && containsMouseLocation() && window.isKeyWindow
285262 }
286−
287− func getMpvButton(_ event: NSEvent) -> Int32 {
288− let buttonNumber = event.buttonNumber
289− switch (buttonNumber) {
290− case 0: return SWIFT_MBTN_LEFT
291− case 1: return SWIFT_MBTN_RIGHT
292− case 2: return SWIFT_MBTN_MID
293− case 3: return SWIFT_MBTN_BACK
294− case 4: return SWIFT_MBTN_FORWARD
295− default: return SWIFT_MBTN9 + Int32(buttonNumber - 5)
296− }
297− }
298263 }

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