exposing control key combinations as before, fixing unicodekey casing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68868 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -137,7 +137,7 @@ NSRect wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const
|
||||
- (void)setImagePosition:(NSCellImagePosition)aPosition;
|
||||
@end
|
||||
|
||||
long wxOSXTranslateCocoaKey( NSEvent* event )
|
||||
long wxOSXTranslateCocoaKey( NSEvent* event, int eventType )
|
||||
{
|
||||
long retval = 0;
|
||||
|
||||
@@ -146,6 +146,12 @@ long wxOSXTranslateCocoaKey( NSEvent* event )
|
||||
NSString* s = [event charactersIgnoringModifiers];
|
||||
// backspace char reports as delete w/modifiers for some reason
|
||||
if ([s length] == 1)
|
||||
{
|
||||
if ( eventType == wxEVT_CHAR && ([event modifierFlags] & NSControlKeyMask) && ( [s characterAtIndex:0] >= 'a' && [s characterAtIndex:0] <= 'z' ) )
|
||||
{
|
||||
retval = WXK_CONTROL_A + ([s characterAtIndex:0] - 'a');
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ( [s characterAtIndex:0] )
|
||||
{
|
||||
@@ -198,6 +204,7 @@ long wxOSXTranslateCocoaKey( NSEvent* event )
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Some keys don't seem to have constants. The code mimics the approach
|
||||
// taken by WebKit. See:
|
||||
@@ -310,7 +317,7 @@ void wxWidgetCocoaImpl::SetupKeyEvent(wxKeyEvent &wxevent , NSEvent * nsEvent, N
|
||||
wxString chars;
|
||||
if ( eventType != NSFlagsChanged )
|
||||
{
|
||||
NSString* nschars = [nsEvent charactersIgnoringModifiers];
|
||||
NSString* nschars = [[nsEvent charactersIgnoringModifiers] uppercaseString];
|
||||
if ( charString )
|
||||
{
|
||||
// if charString is set, it did not come from key up / key down
|
||||
@@ -328,7 +335,7 @@ void wxWidgetCocoaImpl::SetupKeyEvent(wxKeyEvent &wxevent , NSEvent * nsEvent, N
|
||||
|
||||
if (wxevent.GetEventType() != wxEVT_CHAR)
|
||||
{
|
||||
keyval = wxOSXTranslateCocoaKey(nsEvent) ;
|
||||
keyval = wxOSXTranslateCocoaKey(nsEvent, wxevent.GetEventType()) ;
|
||||
switch (eventType)
|
||||
{
|
||||
case NSKeyDown :
|
||||
@@ -349,8 +356,8 @@ void wxWidgetCocoaImpl::SetupKeyEvent(wxKeyEvent &wxevent , NSEvent * nsEvent, N
|
||||
case WXK_ALT:
|
||||
wxevent.SetEventType( wxevent.m_altDown ? wxEVT_KEY_DOWN : wxEVT_KEY_UP);
|
||||
break;
|
||||
case WXK_COMMAND:
|
||||
wxevent.SetEventType( wxevent.m_metaDown ? wxEVT_KEY_DOWN : wxEVT_KEY_UP);
|
||||
case WXK_RAW_CONTROL:
|
||||
wxevent.SetEventType( wxevent.m_rawControlDown ? wxEVT_KEY_DOWN : wxEVT_KEY_UP);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -2128,11 +2135,13 @@ bool wxWidgetCocoaImpl::DoHandleKeyEvent(NSEvent *event)
|
||||
{
|
||||
if ( IsUserPane() && [event type] == NSKeyDown)
|
||||
{
|
||||
if ( wxevent.GetKeyCode() < WXK_SPACE || wxevent.GetKeyCode() == WXK_DELETE || wxevent.GetKeyCode() >= WXK_START )
|
||||
long keycode = wxOSXTranslateCocoaKey( event, wxEVT_CHAR );
|
||||
|
||||
if ( (keycode > 0 && keycode < WXK_SPACE) || keycode == WXK_DELETE || keycode >= WXK_START )
|
||||
{
|
||||
// eventually we could setup a doCommandBySelector catcher and retransform this into the wx key chars
|
||||
wxKeyEvent wxevent2(wxevent) ;
|
||||
wxevent2.SetEventType(wxEVT_CHAR);
|
||||
wxevent2.m_keyCode = keycode;
|
||||
result = GetWXPeer()->OSXHandleKeyEvent(wxevent2);
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user