]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/utils.cpp
Fixed uninstalled toolbars in native toolbar mode, with a method for
[wxWidgets.git] / src / mac / carbon / utils.cpp
index 8e7cf1af166845f06a250cd78b572f0b53783696..9afe0b6d5b7ccbc762b6abae2e6160780d6e7a75 100644 (file)
     #include <TextCommon.h>
     #include <TextEncodingConverter.h>
 #endif
+
+#include "wx/mac/private/timer.h"
 #endif // wxUSE_GUI
 
+#include "wx/evtloop.h"
 #include "wx/mac/private.h"
 
 #if defined(__MWERKS__) && wxUSE_UNICODE
@@ -303,7 +306,13 @@ WXDLLEXPORT bool wxGetEnv(const wxString& var, wxString *value)
 }
 
 // set the env var name to the given value, return true on success
-WXDLLEXPORT bool wxSetEnv(const wxString& var, const wxChar *value)
+WXDLLEXPORT bool wxSetEnv(const wxString& var, const wxString& value)
+{
+    // TODO : under classic there is no environement support, under X yes
+    return false;
+}
+
+WXDLLEXPORT bool wxUnsetEnv(const wxString& var)
 {
     // TODO : under classic there is no environement support, under X yes
     return false;
@@ -378,84 +387,16 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const
     return wxPORT_MAC;
 }
 
-// Reading and writing resources (eg WIN.INI, .Xdefaults)
-#if wxUSE_RESOURCES
-bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file)
+wxEventLoopBase* wxGUIAppTraits::CreateEventLoop()
 {
-    // TODO
-    return false;
+    return new wxEventLoop;
 }
 
-bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file)
+wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
 {
-    wxString buf;
-    buf.Printf(wxT("%.4f"), value);
-
-    return wxWriteResource(section, entry, buf, file);
+    return new wxCarbonTimerImpl(timer);
 }
 
-bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file)
-{
-    wxString buf;
-    buf.Printf(wxT("%ld"), value);
-
-    return wxWriteResource(section, entry, buf, file);
-}
-
-bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file)
-{
-    wxString buf;
-    buf.Printf(wxT("%d"), value);
-
-    return wxWriteResource(section, entry, buf, file);
-}
-
-bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file)
-{
-    // TODO
-    return false;
-}
-
-bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file)
-{
-    char *s = NULL;
-    bool succ = wxGetResource(section, entry, (char **)&s, file);
-    if (succ)
-    {
-        *value = (float)strtod(s, NULL);
-        delete[] s;
-    }
-
-    return succ;
-}
-
-bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file)
-{
-    char *s = NULL;
-    bool succ = wxGetResource(section, entry, (char **)&s, file);
-    if (succ)
-    {
-        *value = strtol(s, NULL, 10);
-        delete[] s;
-    }
-
-    return succ;
-}
-
-bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file)
-{
-    char *s = NULL;
-    bool succ = wxGetResource(section, entry, (char **)&s, file);
-    if (succ)
-    {
-        *value = (int)strtol(s, NULL, 10);
-        delete[] s;
-    }
-
-    return succ;
-}
-#endif // wxUSE_RESOURCES
-
 int gs_wxBusyCursorCount = 0;
 extern wxCursor    gMacCurrentCursor;
 wxCursor        gMacStoredActiveCursor;
@@ -863,12 +804,14 @@ void wxMacControl::Init()
 
 void wxMacControl::Dispose()
 {
+    wxASSERT_MSG( m_controlRef != NULL , wxT("Control Handle already NULL, Dispose called twice ?") );
     wxASSERT_MSG( IsValidControlHandle(m_controlRef) , wxT("Invalid Control Handle (maybe already released) in Dispose") );
 
-    CFIndex count = CFGetRetainCount( m_controlRef ) ;
-    wxASSERT_MSG( count == 1 , wxT("Reference Count of native control was not 1 in Dispose") );
-
-    ::DisposeControl( m_controlRef );
+    // we cannot check the ref count here anymore, as autorelease objects might delete their refs later
+    // we can have situations when being embedded, where the control gets deleted behind our back, so only
+    // CFRelease if we are safe
+    if ( IsValidControlHandle(m_controlRef) )
+        CFRelease(m_controlRef);
     m_controlRef = NULL;
 }