X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7c09167353f99063b887d4a2e4c60b161c56f5cb..2a29485779b4e48d1b7581f36ca11d4e1116f383:/src/mac/carbon/toplevel.cpp diff --git a/src/mac/carbon/toplevel.cpp b/src/mac/carbon/toplevel.cpp index cc6cea4a30..44af089624 100644 --- a/src/mac/carbon/toplevel.cpp +++ b/src/mac/carbon/toplevel.cpp @@ -234,6 +234,8 @@ void wxTopLevelWindowMac::SetIcon(const wxIcon& icon) EventHandlerUPP wxMacWindowEventHandlerUPP = NULL ; +extern long wxMacTranslateKey(unsigned char key, unsigned char code) ; + pascal OSStatus wxMacWindowEventHandler( EventHandlerCallRef handler , EventRef event , void *data ) { OSStatus result = eventNotHandledErr ; @@ -243,8 +245,18 @@ pascal OSStatus wxMacWindowEventHandler( EventHandlerCallRef handler , EventRef case kEventClassTextInput : if ( wxMacConvertEventToRecord( event , &rec ) ) { - wxTheApp->MacHandleOneEvent( &rec ) ; - result = noErr ; + short keycode ; + short keychar ; + keychar = short(rec.message & charCodeMask); + keycode = short(rec.message & keyCodeMask) >> 8 ; + long keyval = wxMacTranslateKey(keychar, keycode) ; + wxWindow* focus = wxWindow::FindFocus() ; + + if ( (focus != NULL) && wxTheApp->MacSendKeyDownEvent( focus , keyval , rec.modifiers , rec.when , rec.where.h , rec.where.v ) ) + { + // was handled internally + result = noErr ; + } } break ; default :