Skip to content

Commit 8bc116f

Browse files
authored
Fix NSEvent.subType assertion (#18126)
1 parent 4c1edc2 commit 8bc116f

File tree

1 file changed

+39
-16
lines changed

1 file changed

+39
-16
lines changed

native/Avalonia.Native/src/OSX/AvnView.mm

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,12 @@ - (bool) ignoreUserInput:(bool)trigerInputWhenDisabled
241241
return FALSE;
242242
}
243243

244+
static void ConvertTilt(NSPoint tilt, float* xTilt, float* yTilt)
245+
{
246+
*xTilt = tilt.x * 90;
247+
*yTilt = -tilt.y * 90;
248+
}
249+
244250
- (void)mouseEvent:(NSEvent *)event withType:(AvnRawMouseEventType) type
245251
{
246252
bool triggerInputWhenDisabled = type != Move && type != LeaveWindow;
@@ -295,30 +301,47 @@ - (void)mouseEvent:(NSEvent *)event withType:(AvnRawMouseEventType) type
295301
float yTilt = 0.0f;
296302
AvnPointerDeviceType pointerType = AvnPointerDeviceType::Mouse;
297303

298-
switch(event.subtype)
304+
switch (event.type)
299305
{
300-
case NSEventSubtypeTabletPoint:
301-
switch(event.type)
306+
case NSEventTypeLeftMouseDown:
307+
case NSEventTypeLeftMouseDragged:
308+
case NSEventTypeRightMouseDown:
309+
case NSEventTypeRightMouseDragged:
310+
case NSEventTypeOtherMouseDown:
311+
case NSEventTypeOtherMouseDragged:
312+
switch (event.subtype)
302313
{
303-
case NSEventTypeLeftMouseDown:
304-
case NSEventTypeLeftMouseDragged:
305-
case NSEventTypeRightMouseDown:
306-
case NSEventTypeRightMouseDragged:
307-
case NSEventTypeOtherMouseDown:
308-
case NSEventTypeOtherMouseDragged:
314+
case NSEventSubtypeTabletPoint:
315+
pointerType = AvnPointerDeviceType::Pen;
309316
pressure = event.pressure;
317+
ConvertTilt(event.tilt, &xTilt, &yTilt);
310318
break;
311-
default:
319+
case NSEventSubtypeTabletProximity:
320+
pointerType = AvnPointerDeviceType::Pen;
312321
pressure = 0.0f;
313322
break;
323+
default:
324+
break;
314325
}
315-
xTilt = event.tilt.x * 90;
316-
yTilt = -event.tilt.y * 90;
317-
pointerType = AvnPointerDeviceType::Pen;
318326
break;
319-
case NSEventSubtypeTabletProximity:
320-
pressure = 0.0f;
321-
pointerType = AvnPointerDeviceType::Pen;
327+
case NSEventTypeLeftMouseUp:
328+
case NSEventTypeRightMouseUp:
329+
case NSEventTypeOtherMouseUp:
330+
case NSEventTypeMouseMoved:
331+
switch (event.subtype)
332+
{
333+
case NSEventSubtypeTabletPoint:
334+
pointerType = AvnPointerDeviceType::Pen;
335+
pressure = 0.0f;
336+
ConvertTilt(event.tilt, &xTilt, &yTilt);
337+
break;
338+
case NSEventSubtypeTabletProximity:
339+
pointerType = AvnPointerDeviceType::Pen;
340+
pressure = 0.0f;
341+
break;
342+
default:
343+
break;
344+
}
322345
break;
323346
default:
324347
break;

0 commit comments

Comments
 (0)