Browse Source

[Avalonia.Native] Replace manual input tracking with NSEvent (#19101)

release/11.3.3
Tim Miller 8 months ago
committed by Julien Lebosquain
parent
commit
a1d5d17ea5
  1. 34
      native/Avalonia.Native/src/OSX/AvnView.mm

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

@ -13,7 +13,6 @@
{
ComObjectWeakPtr<TopLevelImpl> _parent;
NSTrackingArea* _area;
bool _isLeftPressed, _isMiddlePressed, _isRightPressed, _isXButton1Pressed, _isXButton2Pressed;
AvnInputModifiers _modifierState;
NSEvent* _lastMouseDownEvent;
AvnPixelSize _lastPixelSize;
@ -446,7 +445,6 @@ static void ConvertTilt(NSPoint tilt, float* xTilt, float* yTilt)
- (void)mouseDown:(NSEvent *)event
{
_isLeftPressed = true;
_lastMouseDownEvent = event;
[self mouseEvent:event withType:LeftButtonDown];
}
@ -459,15 +457,12 @@ static void ConvertTilt(NSPoint tilt, float* xTilt, float* yTilt)
{
case 2:
case 3:
_isMiddlePressed = true;
[self mouseEvent:event withType:MiddleButtonDown];
break;
case 4:
_isXButton1Pressed = true;
[self mouseEvent:event withType:XButton1Down];
break;
case 5:
_isXButton2Pressed = true;
[self mouseEvent:event withType:XButton2Down];
break;
@ -478,14 +473,12 @@ static void ConvertTilt(NSPoint tilt, float* xTilt, float* yTilt)
- (void)rightMouseDown:(NSEvent *)event
{
_isRightPressed = true;
_lastMouseDownEvent = event;
[self mouseEvent:event withType:RightButtonDown];
}
- (void)mouseUp:(NSEvent *)event
{
_isLeftPressed = false;
[self mouseEvent:event withType:LeftButtonUp];
}
@ -495,15 +488,12 @@ static void ConvertTilt(NSPoint tilt, float* xTilt, float* yTilt)
{
case 2:
case 3:
_isMiddlePressed = false;
[self mouseEvent:event withType:MiddleButtonUp];
break;
case 4:
_isXButton1Pressed = false;
[self mouseEvent:event withType:XButton1Up];
break;
case 5:
_isXButton2Pressed = false;
[self mouseEvent:event withType:XButton2Up];
break;
@ -514,7 +504,6 @@ static void ConvertTilt(NSPoint tilt, float* xTilt, float* yTilt)
- (void)rightMouseUp:(NSEvent *)event
{
_isRightPressed = false;
[self mouseEvent:event withType:RightButtonUp];
}
@ -597,15 +586,6 @@ static void ConvertTilt(NSPoint tilt, float* xTilt, float* yTilt)
_modifierState = [self getModifiers:modifierFlags];
}
- (void)resetPressedMouseButtons
{
_isLeftPressed = false;
_isRightPressed = false;
_isMiddlePressed = false;
_isXButton1Pressed = false;
_isXButton2Pressed = false;
}
- (void)flagsChanged:(NSEvent *)event
{
auto newModifierState = [self getModifiers:[event modifierFlags]];
@ -752,15 +732,17 @@ static void ConvertTilt(NSPoint tilt, float* xTilt, float* yTilt)
if (mod & NSEventModifierFlagCommand)
rv |= Windows;
if (_isLeftPressed)
NSUInteger pressedButtons = [NSEvent pressedMouseButtons];
if (pressedButtons & (1 << 0)) // Left mouse button
rv |= LeftMouseButton;
if (_isMiddlePressed)
rv |= MiddleMouseButton;
if (_isRightPressed)
if (pressedButtons & (1 << 1)) // Right mouse button
rv |= RightMouseButton;
if (_isXButton1Pressed)
if (pressedButtons & (1 << 2)) // Middle mouse button
rv |= MiddleMouseButton;
if (pressedButtons & (1 << 3)) // X1 button
rv |= XButton1MouseButton;
if (_isXButton2Pressed)
if (pressedButtons & (1 << 4)) // X2 button
rv |= XButton2MouseButton;
return (AvnInputModifiers)rv;

Loading…
Cancel
Save