// Mac-specific
UMAInitToolbox( 4 ) ;
+ SetEventMask( everyEvent ) ;
UMAShowWatchCursor() ;
-#ifdef __UNIX__
- AEInstallEventHandler( kCoreEventClass , kAEOpenDocuments , AEHandleODoc ,
+#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340)
+ AEInstallEventHandler( kCoreEventClass , kAEOpenDocuments , NewAEEventHandlerUPP(AEHandleODoc) ,
(long) wxTheApp , FALSE ) ;
- AEInstallEventHandler( kCoreEventClass , kAEOpenApplication , AEHandleOApp ,
+ AEInstallEventHandler( kCoreEventClass , kAEOpenApplication , NewAEEventHandlerUPP(AEHandleOApp) ,
(long) wxTheApp , FALSE ) ;
- AEInstallEventHandler( kCoreEventClass , kAEPrintDocuments , AEHandlePDoc ,
+ AEInstallEventHandler( kCoreEventClass , kAEPrintDocuments , NewAEEventHandlerUPP(AEHandlePDoc) ,
(long) wxTheApp , FALSE ) ;
- AEInstallEventHandler( kCoreEventClass , kAEQuitApplication , AEHandleQuit ,
+ AEInstallEventHandler( kCoreEventClass , kAEQuitApplication , NewAEEventHandlerUPP(AEHandleQuit) ,
(long) wxTheApp , FALSE ) ;
#else
AEInstallEventHandler( kCoreEventClass , kAEOpenDocuments , NewAEEventHandlerProc(AEHandleODoc) ,
wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING);
wxTheColourDatabase->Initialize();
+#if wxUSE_LOG
+ // flush the logged messages if any and install a 'safer' log target: the
+ // default one (wxLogGui) can't be used after the resources are freed just
+ // below and the user suppliedo ne might be even more unsafe (using any
+ // wxWindows GUI function is unsafe starting from now)
+ wxLog::DontCreateOnDemand();
+
+ // this will flush the old messages if any
+ delete wxLog::SetActiveTarget(new wxLogStderr);
+#endif // wxUSE_LOG
+
wxInitializeStockLists();
wxInitializeStockObjects();
{
EventRecord event ;
- long sleepTime = ::GetCaretTime();
+ long sleepTime = 1 ; // GetCaretTime() / 4 ;
if (WaitNextEvent(everyEvent, &event,sleepTime, s_macCursorRgn))
{
wxTheApp->ProcessIdle() ;
}
if ( event.what != kHighLevelEvent )
- SetRectRgn( s_macCursorRgn , event.where.h - 1 , event.where.v - 1, event.where.h + 1 , event.where.v + 1 ) ;
+ SetRectRgn( s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ;
// repeaters
+ DeletePendingObjects() ;
wxMacProcessNotifierAndPendingEvents() ;
}
short windowPart = ::FindWindow(ev->where, &window);
wxWindow* win = wxFindWinFromMacWindow( window ) ;
+ if ( wxPendingDelete.Member(win) )
+ return ;
BitMap screenBits;
GetQDGlobalsScreenBits( &screenBits );
SetOrigin( 0 , 0 ) ;
SetPort( port ) ;
}
- if ( window != frontWindow )
+ if ( window != frontWindow && wxTheApp->s_captureWindow == NULL )
{
if ( s_macIsInModalLoop )
{
}
else
{
+ if ( win )
+ win->MacMouseDown( ev , windowPart ) ;
UMASelectWindow( window ) ;
}
}
void wxApp::MacHandleKeyUpEvent( EventRecord *ev )
{
- // nothing to do
+ wxToolTip::RemoveToolTips() ;
+
+ UInt32 menuresult = UMAMenuEvent(ev) ;
+ if ( HiWord( menuresult ) )
+ {
+ }
+ else
+ {
+ short keycode ;
+ short keychar ;
+ keychar = short(ev->message & charCodeMask);
+ keycode = short(ev->message & keyCodeMask) >> 8 ;
+
+ wxWindow* focus = wxWindow::FindFocus() ;
+ if ( focus )
+ {
+ long keyval = wxMacTranslateKey(keychar, keycode) ;
+
+ wxKeyEvent event(wxEVT_KEY_UP);
+ event.m_shiftDown = ev->modifiers & shiftKey;
+ event.m_controlDown = ev->modifiers & controlKey;
+ event.m_altDown = ev->modifiers & optionKey;
+ event.m_metaDown = ev->modifiers & cmdKey;
+ event.m_keyCode = keyval;
+ event.m_x = ev->where.h;
+ event.m_y = ev->where.v;
+ event.m_timeStamp = ev->when;
+ event.SetEventObject(focus);
+ bool handled = focus->GetEventHandler()->ProcessEvent( event ) ;
+ }
+ }
}
void wxApp::MacHandleActivateEvent( EventRecord *ev )
wxWindow * win = wxFindWinFromMacWindow( window ) ;
if ( win )
{
- win->MacUpdate( ev ) ;
+ if ( !wxPendingDelete.Member(win) )
+ win->MacUpdate( ev ) ;
}
else
{