Browse Source

keyboard ding sound if keyboard event wasnt handled

pull/1977/head
Dan Walmsley 8 years ago
parent
commit
8cc512beaa
  1. 8
      src/Avalonia.Native.OSX/window.mm
  2. 12
      src/Avalonia.Native/WindowImplBase.cs
  3. 2
      src/headers/avalonia-native.h

8
src/Avalonia.Native.OSX/window.mm

@ -92,6 +92,7 @@ protected:
NSTrackingArea* _area;
bool _isLeftPressed, _isMiddlePressed, _isRightPressed, _isMouseOver;
NSEvent* _lastMouseDownEvent;
bool _lastKeyHandled;
}
- (NSEvent*) lastMouseDownEvent
@ -312,7 +313,12 @@ protected:
auto timestamp = [event timestamp] * 1000;
auto modifiers = [self getModifiers:[event modifierFlags]];
_parent->BaseEvents->RawKeyEvent(type, timestamp, modifiers, Delete);
_lastKeyHandled = _parent->BaseEvents->RawKeyEvent(type, timestamp, modifiers, Delete);
}
- (BOOL)performKeyEquivalent:(NSEvent *)event
{
return _lastKeyHandled;
}
- (void)keyDown:(NSEvent *)event

12
src/Avalonia.Native/WindowImplBase.cs

@ -106,9 +106,9 @@ namespace Avalonia.Native
_parent.RawMouseEvent(type, timeStamp, modifiers, point, delta);
}
public void RawKeyEvent(AvnRawKeyEventType type, uint timeStamp, AvnInputModifiers modifiers, uint key)
public bool RawKeyEvent(AvnRawKeyEventType type, uint timeStamp, AvnInputModifiers modifiers, uint key)
{
_parent.RawKeyEvent(type, timeStamp, modifiers, key);
return _parent.RawKeyEvent(type, timeStamp, modifiers, key);
}
}
@ -118,9 +118,13 @@ namespace Avalonia.Native
}
public void RawKeyEvent(AvnRawKeyEventType type, uint timeStamp, AvnInputModifiers modifiers, uint key)
public bool RawKeyEvent(AvnRawKeyEventType type, uint timeStamp, AvnInputModifiers modifiers, uint key)
{
Input?.Invoke(new RawKeyEventArgs(_keyboard, timeStamp, (RawKeyEventType)type, (Key)key, (InputModifiers)modifiers));
var args = new RawKeyEventArgs(_keyboard, timeStamp, (RawKeyEventType)type, (Key)key, (InputModifiers)modifiers);
Input?.Invoke(args);
return args.Handled;
}
public void RawMouseEvent(AvnRawMouseEventType type, uint timeStamp, AvnInputModifiers modifiers, AvnPoint point, AvnVector delta)

2
src/headers/avalonia-native.h

@ -98,7 +98,7 @@ AVNCOM(IAvnWindowBaseEvents, 04) : IUnknown
AvnPoint point,
AvnVector delta) = 0;
virtual void RawKeyEvent (AvnRawKeyEventType type, unsigned int timeStamp, AvnInputModifiers modifiers, unsigned int key) = 0;
virtual bool RawKeyEvent (AvnRawKeyEventType type, unsigned int timeStamp, AvnInputModifiers modifiers, unsigned int key) = 0;
};

Loading…
Cancel
Save