]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/app.cpp
A call to wxPopupWindow::Show shouldn't automatically cause the popup window to steal...
[wxWidgets.git] / src / osx / carbon / app.cpp
index aca21781274c3a24f8fe9902c9e6c61264e98177..9560c31dd1d0b3348583abce04da1cdd1c3afc04 100644 (file)
@@ -508,12 +508,12 @@ wxMenu* wxFindMenuFromMacCommand( const HICommand &command , wxMenuItem* &item )
         }
         else
         {
         }
         else
         {
-            URefCon refCon = NULL ;
+            URefCon refCon = 0 ;
 
             GetMenuItemRefCon( command.menu.menuRef , command.menu.menuItemIndex , &refCon ) ;
             itemMenu = wxFindMenuFromMacMenu( command.menu.menuRef ) ;
             if ( itemMenu != NULL && refCon != 0)
 
             GetMenuItemRefCon( command.menu.menuRef , command.menu.menuItemIndex , &refCon ) ;
             itemMenu = wxFindMenuFromMacMenu( command.menu.menuRef ) ;
             if ( itemMenu != NULL && refCon != 0)
-                item = ((wxMenuItemImpl*) refCon)->GetWXPeer() ;
+                item = (wxMenuItem*) refCon;
         }
     }
 #endif
         }
     }
 #endif
@@ -799,7 +799,7 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
     // application (otherwise applications would need to handle it)
     if ( argc > 1 )
     {
     // application (otherwise applications would need to handle it)
     if ( argc > 1 )
     {
-        static const wxChar *ARG_PSN = _T("-psn_");
+        static const wxChar *ARG_PSN = wxT("-psn_");
         if ( wxStrncmp(argv[1], ARG_PSN, wxStrlen(ARG_PSN)) == 0 )
         {
             // remove this argument
         if ( wxStrncmp(argv[1], ARG_PSN, wxStrlen(ARG_PSN)) == 0 )
         {
             // remove this argument
@@ -835,17 +835,19 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
     event_posted_context.perform = macPostedEventCallback;
     m_macEventPosted = CFRunLoopSourceCreate(NULL,0,&event_posted_context);
     CFRunLoopAddSource(CFRunLoopGetCurrent(), m_macEventPosted, kCFRunLoopCommonModes);
     event_posted_context.perform = macPostedEventCallback;
     m_macEventPosted = CFRunLoopSourceCreate(NULL,0,&event_posted_context);
     CFRunLoopAddSource(CFRunLoopGetCurrent(), m_macEventPosted, kCFRunLoopCommonModes);
-       // run loop takes ownership
-       CFRelease(m_macEventPosted);
+    // run loop takes ownership
+    CFRelease(m_macEventPosted);
         */
     return true;
 }
 
         */
     return true;
 }
 
+#if wxOSX_USE_COCOA_OR_CARBON
 bool wxApp::CallOnInit()
 {
     wxMacAutoreleasePool autoreleasepool;
     return OnInit();
 }
 bool wxApp::CallOnInit()
 {
     wxMacAutoreleasePool autoreleasepool;
     return OnInit();
 }
+#endif
 
 bool wxApp::OnInitGui()
 {
 
 bool wxApp::OnInitGui()
 {
@@ -864,6 +866,20 @@ bool wxApp::ProcessIdle()
     return wxAppBase::ProcessIdle();
 }
 
     return wxAppBase::ProcessIdle();
 }
 
+#if wxOSX_USE_COCOA_OR_CARBON
+
+int wxApp::OnRun()
+{
+    wxMacAutoreleasePool pool;
+    return wxAppBase::OnRun();
+}
+
+#else
+
+// iPhone version in utils.mm
+
+#endif
+
 #if wxOSX_USE_CARBON
 bool wxApp::DoInitGui()
 {
 #if wxOSX_USE_CARBON
 bool wxApp::DoInitGui()
 {
@@ -937,15 +953,16 @@ void wxApp::DoCleanUp()
 
 void wxApp::CleanUp()
 {
 
 void wxApp::CleanUp()
 {
+    wxMacAutoreleasePool autoreleasepool;
 #if wxUSE_TOOLTIPS
     wxToolTip::RemoveToolTips() ;
 #endif
 
     if (m_macEventPosted)
 #if wxUSE_TOOLTIPS
     wxToolTip::RemoveToolTips() ;
 #endif
 
     if (m_macEventPosted)
-       {
-               CFRunLoopRemoveSource(CFRunLoopGetCurrent(), m_macEventPosted, kCFRunLoopCommonModes);
-               m_macEventPosted = NULL;
-       }
+    {
+        CFRunLoopRemoveSource(CFRunLoopGetCurrent(), m_macEventPosted, kCFRunLoopCommonModes);
+        m_macEventPosted = NULL;
+    }
 
     DoCleanUp();
 
 
     DoCleanUp();
 
@@ -1055,6 +1072,13 @@ wxApp::wxApp()
     m_macCurrentEvent = NULL ;
     m_macCurrentEventHandlerCallRef = NULL ;
     m_macEventPosted = NULL ;
     m_macCurrentEvent = NULL ;
     m_macCurrentEventHandlerCallRef = NULL ;
     m_macEventPosted = NULL ;
+    m_macPool = new wxMacAutoreleasePool();
+}
+
+wxApp::~wxApp()
+{
+    if (m_macPool)
+        delete m_macPool;
 }
 
 CFMutableArrayRef GetAutoReleaseArray()
 }
 
 CFMutableArrayRef GetAutoReleaseArray()
@@ -1070,6 +1094,13 @@ void wxApp::MacAddToAutorelease( void* cfrefobj )
     CFArrayAppendValue( GetAutoReleaseArray(), cfrefobj );
 }
 
     CFArrayAppendValue( GetAutoReleaseArray(), cfrefobj );
 }
 
+void wxApp::MacReleaseAutoreleasePool()
+{
+    if (m_macPool)
+        delete m_macPool;
+    m_macPool = new wxMacAutoreleasePool();
+}
+
 void wxApp::OnIdle(wxIdleEvent& WXUNUSED(event))
 {
     // If they are pending events, we must process them: pending events are
 void wxApp::OnIdle(wxIdleEvent& WXUNUSED(event))
 {
     // If they are pending events, we must process them: pending events are
@@ -1292,6 +1323,12 @@ int wxMacKeyCodeToModifier(wxKeyCode key)
 }
 #endif
 
 }
 #endif
 
+#if wxOSX_USE_COCOA && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+
+// defined in utils.mm
+
+#elif wxOSX_USE_COCOA_OR_CARBON
+
 wxMouseState wxGetMouseState()
 {
     wxMouseState ms;
 wxMouseState wxGetMouseState()
 {
     wxMouseState ms;
@@ -1300,7 +1337,6 @@ wxMouseState wxGetMouseState()
     ms.SetX(pt.x);
     ms.SetY(pt.y);
 
     ms.SetX(pt.x);
     ms.SetY(pt.y);
 
-#if wxOSX_USE_CARBON
     UInt32 buttons = GetCurrentButtonState();
     ms.SetLeftDown( (buttons & 0x01) != 0 );
     ms.SetMiddleDown( (buttons & 0x04) != 0 );
     UInt32 buttons = GetCurrentButtonState();
     ms.SetLeftDown( (buttons & 0x01) != 0 );
     ms.SetMiddleDown( (buttons & 0x04) != 0 );
@@ -1311,12 +1347,12 @@ wxMouseState wxGetMouseState()
     ms.SetShiftDown(modifiers & shiftKey);
     ms.SetAltDown(modifiers & optionKey);
     ms.SetMetaDown(modifiers & cmdKey);
     ms.SetShiftDown(modifiers & shiftKey);
     ms.SetAltDown(modifiers & optionKey);
     ms.SetMetaDown(modifiers & cmdKey);
-#else
-    // TODO
-#endif
+
     return ms;
 }
 
     return ms;
 }
 
+#endif
+
 // TODO : once the new key/char handling is tested, move all the code to wxWindow
 
 bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar )
 // TODO : once the new key/char handling is tested, move all the code to wxWindow
 
 bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar )
@@ -1443,7 +1479,7 @@ void wxApp::MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymess
         // control interferes with some built-in keys like pgdown, return etc. therefore we remove the controlKey modifier
         // and look at the character after
 #ifdef __LP64__
         // control interferes with some built-in keys like pgdown, return etc. therefore we remove the controlKey modifier
         // and look at the character after
 #ifdef __LP64__
-               // TODO new implementation using TextInputSources
+        // TODO new implementation using TextInputSources
 #else
         UInt32 state = 0;
         UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~(controlKey | shiftKey | optionKey))) | keycode, &state);
 #else
         UInt32 state = 0;
         UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~(controlKey | shiftKey | optionKey))) | keycode, &state);
@@ -1516,6 +1552,15 @@ void wxApp::MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymess
     event.m_y = wherey;
     event.SetTimestamp(when);
     event.SetEventObject(focus);
     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
 }
 
 #endif
 }