]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/app.cpp
We'll get an unhandled exception if the view is hidden, fortunately, lockFocusIfCanDr...
[wxWidgets.git] / src / osx / carbon / app.cpp
index be9227b5fb8cac6b8bd8674dcf81a84426d76a2a..2b8c675d3dd1fcdc2df09c1cfa15a11ea06873b1 100644 (file)
@@ -79,7 +79,7 @@ wxString  wxApp::s_macHelpMenuTitleName = wxT("&Help") ;
 
 bool      wxApp::sm_isEmbedded = false; // Normally we're not a plugin
 
-#if wxOSX_USE_COCOA_OR_CARBON
+#if wxOSX_USE_CARBON
 
 //----------------------------------------------------------------------
 // Core Apple Event Support
@@ -253,7 +253,7 @@ short wxApp::MacHandleAEQuit(const WXEVENTREF WXUNUSED(event) , WXEVENTREF WXUNU
     if ( win )
     {
         wxCommandEvent exitEvent(wxEVT_COMMAND_MENU_SELECTED, s_macExitMenuItemId);
-        if (!win->ProcessEvent(exitEvent))
+        if (!win->GetEventHandler()->ProcessEvent(exitEvent))
             win->Close(true) ;
     }
     else
@@ -1119,7 +1119,7 @@ void wxCYield()
 
 // Yield to other processes
 
-bool wxApp::Yield(bool onlyIfNeeded)
+bool wxApp::DoYield(bool onlyIfNeeded, long eventsToProcess)
 {
 #if wxUSE_THREADS
     // Yielding from a non-gui thread needs to bail out, otherwise we end up
@@ -1141,6 +1141,7 @@ bool wxApp::Yield(bool onlyIfNeeded)
     }
 
     m_isInsideYield = true;
+    m_eventsToProcessInsideYield = eventsToProcess;
 
 #if wxUSE_LOG
     // disable log flushing from here because a call to wxYield() shouldn't
@@ -1377,47 +1378,10 @@ bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifi
     if ( !focus )
         return false ;
 
-    bool handled;
     wxKeyEvent event(wxEVT_KEY_DOWN) ;
     MacCreateKeyEvent( event, focus , keymessage , modifiers , when , wherex , wherey , uniChar ) ;
 
-    handled = focus->HandleWindowEvent( event ) ;
-    if ( handled && event.GetSkipped() )
-        handled = false ;
-
-#if wxUSE_ACCEL
-    if ( !handled )
-    {
-        wxWindow *ancestor = focus;
-        while (ancestor)
-        {
-            int command = ancestor->GetAcceleratorTable()->GetCommand( event );
-            if (command != -1)
-            {
-                wxEvtHandler * const handler = ancestor->GetEventHandler();
-
-                wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
-                handled = handler->ProcessEvent( command_event );
-
-                if ( !handled )
-                {
-                    // accelerators can also be used with buttons, try them too
-                    command_event.SetEventType(wxEVT_COMMAND_BUTTON_CLICKED);
-                    handled = handler->ProcessEvent( command_event );
-                }
-
-                break;
-            }
-
-            if (ancestor->IsTopLevel())
-                break;
-
-            ancestor = ancestor->GetParent();
-        }
-    }
-#endif // wxUSE_ACCEL
-
-    return handled ;
+    return focus->OSXHandleKeyEvent(event);
 }
 
 bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar )
@@ -1425,12 +1389,10 @@ bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keymessage , long modifier
     if ( !focus )
         return false ;
 
-    bool handled;
     wxKeyEvent event( wxEVT_KEY_UP ) ;
     MacCreateKeyEvent( event, focus , keymessage , modifiers , when , wherex , wherey , uniChar ) ;
-    handled = focus->HandleWindowEvent( event ) ;
 
-    return handled ;
+    return focus->OSXHandleKeyEvent(event) ;
 }
 
 bool wxApp::MacSendCharEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar )
@@ -1439,11 +1401,11 @@ bool wxApp::MacSendCharEvent( wxWindow* focus , long keymessage , long modifiers
         return false ;
     wxKeyEvent event(wxEVT_CHAR) ;
     MacCreateKeyEvent( event, focus , keymessage , modifiers , when , wherex , wherey , uniChar ) ;
-    long keyval = event.m_keyCode ;
 
     bool handled = false ;
 
 #if wxOSX_USE_CARBON
+    long keyval = event.m_keyCode ;
     wxNonOwnedWindow *tlw = focus->MacGetTopLevelWindow() ;
 
     if (tlw)