X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7c09167353f99063b887d4a2e4c60b161c56f5cb..7948c0c24401c496c04da3c28f1f1f2f282ba327:/src/mac/toplevel.cpp diff --git a/src/mac/toplevel.cpp b/src/mac/toplevel.cpp index cc6cea4a30..efcf1a737d 100644 --- a/src/mac/toplevel.cpp +++ b/src/mac/toplevel.cpp @@ -162,7 +162,7 @@ wxTopLevelWindowMac::~wxTopLevelWindowMac() wxPendingDelete.Append( new wxMacDeferredWindowDeleter( (WindowRef) m_macWindow ) ) ; } - #if TARGET_CARBON +#if TARGET_CARBON if ( m_macEventHandler ) { ::RemoveEventHandler((EventHandlerRef) m_macEventHandler); @@ -171,21 +171,9 @@ wxTopLevelWindowMac::~wxTopLevelWindowMac() #endif wxRemoveMacWindowAssociation( this ) ; - wxTopLevelWindows.DeleteObject(this); - if ( wxModelessWindows.Find(this) ) wxModelessWindows.DeleteObject(this); - // If this is the last top-level window, exit. - if ( wxTheApp && (wxTopLevelWindows.Number() == 0) ) - { - wxTheApp->SetTopWindow(NULL); - - if ( wxTheApp->GetExitOnFrameDelete() ) - { - wxTheApp->ExitMainLoop() ; - } - } DisposeRgn( (RgnHandle) m_macNoEraseUpdateRgn ) ; } @@ -234,6 +222,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 +233,13 @@ pascal OSStatus wxMacWindowEventHandler( EventHandlerCallRef handler , EventRef case kEventClassTextInput : if ( wxMacConvertEventToRecord( event , &rec ) ) { - wxTheApp->MacHandleOneEvent( &rec ) ; - result = noErr ; + wxTheApp->m_macCurrentEvent = &rec ; + wxWindow* focus = wxWindow::FindFocus() ; + if ( (focus != NULL) && wxTheApp->MacSendKeyDownEvent( focus , rec.message , rec.modifiers , rec.when , rec.where.h , rec.where.v ) ) + { + // was handled internally + result = noErr ; + } } break ; default :