short wxApp::MacHandleAEQuit(const WXEVENTREF WXUNUSED(event) , WXEVENTREF WXUNUSED(reply))
{
- wxWindow* win = GetTopWindow() ;
- if ( win )
+ wxCloseEvent event;
+ wxTheApp->OnQueryEndSession(event);
+ if ( !event.GetVeto() )
{
- wxCommandEvent exitEvent(wxEVT_COMMAND_MENU_SELECTED, s_macExitMenuItemId);
- if (!win->GetEventHandler()->ProcessEvent(exitEvent))
- win->Close(true) ;
+ wxCloseEvent event;
+ wxTheApp->OnEndSession(event);
}
- else
- {
- ExitMainLoop() ;
- }
-
return noErr ;
}
// user can veto the close, and therefore the end session.
void wxApp::OnQueryEndSession(wxCloseEvent& event)
{
- if (GetTopWindow())
+ if ( !wxDialog::OSXHasModalDialogsOpen() )
+ {
+ if (GetTopWindow())
+ {
+ if (!GetTopWindow()->Close(!event.CanVeto()))
+ event.Veto(true);
+ }
+ }
+ else
{
- if (!GetTopWindow()->Close(!event.CanVeto()))
- event.Veto(true);
+ event.Veto(true);
}
}