X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/524c47aa3adf2af11a3069fd5da035a604f08f66..17ad51edc74e86c6f914b0a5342d5603ac9d4344:/src/osx/carbon/app.cpp diff --git a/src/osx/carbon/app.cpp b/src/osx/carbon/app.cpp index 1067c8a8e5..0ec20f24c4 100644 --- a/src/osx/carbon/app.cpp +++ b/src/osx/carbon/app.cpp @@ -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 @@ -184,7 +184,7 @@ short wxApp::MacHandleAEGURL(const WXEVENTREF event, WXEVENTREF WXUNUSED(reply)) if (err != noErr) return err; - url[actualSize] = '\0'; // Terminate the C string + url[actualSize] = '\0'; // Terminate the C string ProcessSerialNumber PSN ; PSN.highLongOfPSN = 0 ; @@ -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 @@ -357,9 +357,9 @@ void wxApp::MacReopenApp() // make sure we don't show 'virtual toplevel windows' like wxTaskBarIconWindow if ( firstHidden == NULL && ( wxDynamicCast( win, wxFrame ) || wxDynamicCast( win, wxDialog ) ) ) firstHidden = win ; - } + } else if ( win->IsIconized() ) - { + { if ( firstIconized == NULL ) firstIconized = win ; } @@ -499,7 +499,7 @@ wxMenu* wxFindMenuFromMacCommand( const HICommand &command , wxMenuItem* &item ) // is it part of the application or the Help menu, then look for the id directly if ( ( GetMenuHandle( kwxMacAppleMenuId ) != NULL && command.menu.menuRef == GetMenuHandle( kwxMacAppleMenuId ) ) || - ( helpMenuHandle != NULL && command.menu.menuRef == helpMenuHandle ) || + ( helpMenuHandle != NULL && command.menu.menuRef == helpMenuHandle ) || wxMenuBar::MacGetWindowMenuHMenu() != NULL && command.menu.menuRef == wxMenuBar::MacGetWindowMenuHMenu() ) { wxMenuBar* mbar = wxMenuBar::MacGetInstalledMenuBar() ; @@ -576,7 +576,7 @@ wxMacAppMenuEventHandler( EventHandlerCallRef WXUNUSED(handler), case kEventMenuTargetItem: { HICommand command ; - + command.menu.menuRef = menuRef; command.menu.menuItemIndex = cEvent.GetParameter(kEventParamMenuItemIndex,typeMenuItemIndex) ; command.commandID = cEvent.GetParameter(kEventParamMenuCommand,typeMenuCommand) ; @@ -732,7 +732,7 @@ pascal OSStatus wxMacAppEventHandler( EventHandlerCallRef handler , EventRef eve DEFINE_ONE_SHOT_HANDLER_GETTER( wxMacAppEventHandler ) #endif -#if defined( __WXDEBUG__ ) && wxOSX_USE_COCOA_OR_CARBON +#if wxDEBUG_LEVEL && wxOSX_USE_COCOA_OR_CARBON pascal static void wxMacAssertOutputHandler(OSType WXUNUSED(componentSignature), @@ -778,7 +778,7 @@ wxMacAssertOutputHandler(OSType WXUNUSED(componentSignature), #endif } -#endif //__WXDEBUG__ +#endif // wxDEBUG_LEVEL extern "C" void macPostedEventCallback(void *WXUNUSED(unused)) { @@ -789,7 +789,7 @@ bool wxApp::Initialize(int& argc, wxChar **argv) { // Mac-specific -#if defined( __WXDEBUG__ ) && wxOSX_USE_COCOA_OR_CARBON +#if wxDEBUG_LEVEL && wxOSX_USE_COCOA_OR_CARBON InstallDebugAssertOutputHandler( NewDebugAssertOutputHandlerUPP( wxMacAssertOutputHandler ) ); #endif @@ -900,7 +900,7 @@ bool wxApp::DoInitGui() if ( !wxMacInitCocoa() ) return false; - + return true; } @@ -956,7 +956,7 @@ void wxApp::CleanUp() // misc initialization stuff //---------------------------------------------------------------------- -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 +#if wxOSX_USE_CARBON && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 bool wxMacConvertEventToRecord( EventRef event , EventRecord *rec) { OSStatus err = noErr ; @@ -1076,7 +1076,7 @@ void wxApp::OnIdle(wxIdleEvent& WXUNUSED(event)) // either events to the threads other than main or events posted with // wxPostEvent() functions #ifndef __WXUNIVERSAL__ -#if wxUSE_MENU +#if wxUSE_MENUS if (!wxMenuBar::MacGetInstalledMenuBar() && wxMenuBar::MacGetCommonMenuBar()) wxMenuBar::MacGetCommonMenuBar()->MacInstallMenuBar(); #endif @@ -1117,61 +1117,6 @@ void wxCYield() wxYield() ; } -// Yield to other processes - -bool wxApp::Yield(bool onlyIfNeeded) -{ -#if wxUSE_THREADS - // Yielding from a non-gui thread needs to bail out, otherwise we end up - // possibly sending events in the thread too. - if ( !wxThread::IsMain() ) - { - return true; - } -#endif // wxUSE_THREADS - - static bool s_inYield = false; - - if (s_inYield) - { - if ( !onlyIfNeeded ) - { - wxFAIL_MSG( wxT("wxYield called recursively" ) ); - } - - return false; - } - - s_inYield = true; - -#if wxUSE_LOG - // disable log flushing from here because a call to wxYield() shouldn't - // normally result in message boxes popping up &c - wxLog::Suspend(); -#endif // wxUSE_LOG - - wxEventLoop * const - loop = wx_static_cast(wxEventLoop *, wxEventLoop::GetActive()); - if ( loop ) - { - // process all pending events: - while ( loop->Pending() ) - loop->Dispatch(); - } - - // it's necessary to call ProcessIdle() to update the frames sizes which - // might have been changed (it also will update other things set from - // OnUpdateUI() which is a nice (and desired) side effect) - while ( ProcessIdle() ) {} - -#if wxUSE_LOG - wxLog::Resume(); -#endif // wxUSE_LOG - s_inYield = false; - - return true; -} - // virtual void wxApp::MacHandleUnhandledEvent( WXEVENTREF WXUNUSED(evr) ) { @@ -1379,47 +1324,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 ) @@ -1427,12 +1335,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 ) @@ -1441,11 +1347,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) @@ -1558,34 +1464,34 @@ void wxApp::MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymess { keyval = (keyval - '0') + WXK_NUMPAD0; } - else if (keycode >= 65 && keycode <= 81) + else if (keycode >= 65 && keycode <= 81) { switch (keycode) { case 76 : keyval = WXK_NUMPAD_ENTER; break; - + case 81: keyval = WXK_NUMPAD_EQUAL; break; - + case 67: keyval = WXK_NUMPAD_MULTIPLY; break; - + case 75: keyval = WXK_NUMPAD_DIVIDE; break; - + case 78: keyval = WXK_NUMPAD_SUBTRACT; break; - + case 69: keyval = WXK_NUMPAD_ADD; break; - + case 65: keyval = WXK_NUMPAD_DECIMAL; break; @@ -1594,7 +1500,7 @@ void wxApp::MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymess } } } - + event.m_shiftDown = modifiers & shiftKey; event.m_controlDown = modifiers & controlKey; event.m_altDown = modifiers & optionKey; @@ -1610,6 +1516,15 @@ void wxApp::MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymess event.m_y = wherey; event.SetTimestamp(when); event.SetEventObject(focus); +#else + wxUnusedVar(event); + wxUnusedVar(focus); + wxUnusedVar(keymessage); + wxUnusedVar(modifiers); + wxUnusedVar(when); + wxUnusedVar(wherex); + wxUnusedVar(wherey); + wxUnusedVar(uniChar); #endif } @@ -1621,7 +1536,7 @@ void wxApp::MacHideApp() HICommand command; memset( &command, 0 , sizeof(command) ); command.commandID = kHICommandHide ; - event.SetParameter(kEventParamDirectObject, command ); + event.SetParameter(kEventParamDirectObject, command ); SendEventToApplication( event ); #endif }