misc key-event fixes, see #10876
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60969 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -204,7 +204,56 @@ long wxOSXTranslateCocoaKey( NSEvent* event )
|
|||||||
retval = WXK_TAB;
|
retval = WXK_TAB;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
case 75: // /
|
||||||
|
retval = WXK_NUMPAD_DIVIDE;
|
||||||
|
break;
|
||||||
|
case 67: // *
|
||||||
|
retval = WXK_NUMPAD_MULTIPLY;
|
||||||
|
break;
|
||||||
|
case 78: // -
|
||||||
|
retval = WXK_NUMPAD_SUBTRACT;
|
||||||
|
break;
|
||||||
|
case 69: // +
|
||||||
|
retval = WXK_NUMPAD_ADD;
|
||||||
|
break;
|
||||||
|
case 76: // Enter
|
||||||
|
retval = WXK_NUMPAD_ENTER;
|
||||||
|
break;
|
||||||
|
case 65: // .
|
||||||
|
retval = WXK_NUMPAD_DECIMAL;
|
||||||
|
break;
|
||||||
|
case 82: // 0
|
||||||
|
retval = WXK_NUMPAD0;
|
||||||
|
break;
|
||||||
|
case 83: // 1
|
||||||
|
retval = WXK_NUMPAD1;
|
||||||
|
break;
|
||||||
|
case 84: // 2
|
||||||
|
retval = WXK_NUMPAD2;
|
||||||
|
break;
|
||||||
|
case 85: // 3
|
||||||
|
retval = WXK_NUMPAD3;
|
||||||
|
break;
|
||||||
|
case 86: // 4
|
||||||
|
retval = WXK_NUMPAD4;
|
||||||
|
break;
|
||||||
|
case 87: // 5
|
||||||
|
retval = WXK_NUMPAD5;
|
||||||
|
break;
|
||||||
|
case 88: // 6
|
||||||
|
retval = WXK_NUMPAD6;
|
||||||
|
break;
|
||||||
|
case 89: // 7
|
||||||
|
retval = WXK_NUMPAD7;
|
||||||
|
break;
|
||||||
|
case 91: // 8
|
||||||
|
retval = WXK_NUMPAD8;
|
||||||
|
break;
|
||||||
|
case 92: // 9
|
||||||
|
retval = WXK_NUMPAD9;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
//retval = [event keyCode];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
@@ -224,25 +273,11 @@ void SetupKeyEvent( wxKeyEvent &wxevent , NSEvent * nsEvent, NSString* charStrin
|
|||||||
wxevent.m_rawFlags = modifiers;
|
wxevent.m_rawFlags = modifiers;
|
||||||
|
|
||||||
wxevent.SetTimestamp( [nsEvent timestamp] * 1000.0 ) ;
|
wxevent.SetTimestamp( [nsEvent timestamp] * 1000.0 ) ;
|
||||||
switch (eventType)
|
|
||||||
{
|
|
||||||
case NSKeyDown :
|
|
||||||
wxevent.SetEventType( wxEVT_KEY_DOWN ) ;
|
|
||||||
break;
|
|
||||||
case NSKeyUp :
|
|
||||||
wxevent.SetEventType( wxEVT_KEY_UP ) ;
|
|
||||||
break;
|
|
||||||
case NSFlagsChanged :
|
|
||||||
// setup common code here
|
|
||||||
break;
|
|
||||||
default :
|
|
||||||
break ;
|
|
||||||
}
|
|
||||||
|
|
||||||
wxString chars;
|
wxString chars;
|
||||||
if ( eventType != NSFlagsChanged )
|
if ( eventType != NSFlagsChanged )
|
||||||
{
|
{
|
||||||
NSString* nschars = [nsEvent characters];
|
NSString* nschars = (wxevent.GetEventType() != wxEVT_CHAR) ? [nsEvent charactersIgnoringModifiers] : [nsEvent characters];
|
||||||
if ( charString )
|
if ( charString )
|
||||||
{
|
{
|
||||||
// if charString is set, it did not come from key up / key down
|
// if charString is set, it did not come from key up / key down
|
||||||
@@ -261,7 +296,37 @@ void SetupKeyEvent( wxKeyEvent &wxevent , NSEvent * nsEvent, NSString* charStrin
|
|||||||
long keyval = 0;
|
long keyval = 0;
|
||||||
|
|
||||||
if (wxevent.GetEventType() != wxEVT_CHAR)
|
if (wxevent.GetEventType() != wxEVT_CHAR)
|
||||||
|
{
|
||||||
keyval = wxOSXTranslateCocoaKey(nsEvent) ;
|
keyval = wxOSXTranslateCocoaKey(nsEvent) ;
|
||||||
|
switch (eventType)
|
||||||
|
{
|
||||||
|
case NSKeyDown :
|
||||||
|
wxevent.SetEventType( wxEVT_KEY_DOWN ) ;
|
||||||
|
break;
|
||||||
|
case NSKeyUp :
|
||||||
|
wxevent.SetEventType( wxEVT_KEY_UP ) ;
|
||||||
|
break;
|
||||||
|
case NSFlagsChanged :
|
||||||
|
switch (keyval)
|
||||||
|
{
|
||||||
|
case WXK_CONTROL:
|
||||||
|
wxevent.SetEventType( wxevent.m_controlDown ? wxEVT_KEY_DOWN : wxEVT_KEY_UP);
|
||||||
|
break;
|
||||||
|
case WXK_SHIFT:
|
||||||
|
wxevent.SetEventType( wxevent.m_shiftDown ? wxEVT_KEY_DOWN : wxEVT_KEY_UP);
|
||||||
|
break;
|
||||||
|
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);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( !keyval )
|
if ( !keyval )
|
||||||
{
|
{
|
||||||
@@ -1397,7 +1462,7 @@ void wxWidgetCocoaImpl::InstallEventHandler( WXWidget control )
|
|||||||
|
|
||||||
bool wxWidgetCocoaImpl::DoHandleCharEvent(NSEvent *event, NSString *text)
|
bool wxWidgetCocoaImpl::DoHandleCharEvent(NSEvent *event, NSString *text)
|
||||||
{
|
{
|
||||||
wxKeyEvent wxevent(wxEVT_KEY_DOWN);
|
wxKeyEvent wxevent(wxEVT_CHAR);
|
||||||
SetupKeyEvent( wxevent, event, text );
|
SetupKeyEvent( wxevent, event, text );
|
||||||
wxevent.SetEventObject(GetWXPeer());
|
wxevent.SetEventObject(GetWXPeer());
|
||||||
|
|
||||||
@@ -1416,7 +1481,8 @@ bool wxWidgetCocoaImpl::DoHandleKeyEvent(NSEvent *event)
|
|||||||
if ([event type] == NSKeyDown)
|
if ([event type] == NSKeyDown)
|
||||||
{
|
{
|
||||||
m_lastKeyDownEvent = event;
|
m_lastKeyDownEvent = event;
|
||||||
[m_osxView interpretKeyEvents:[NSArray arrayWithObject:event]];
|
if ( !result )
|
||||||
|
[m_osxView interpretKeyEvents:[NSArray arrayWithObject:event]];
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user