]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/utils.cpp
Committing in .
[wxWidgets.git] / src / mac / carbon / utils.cpp
index 00a59e4527677c1006833039b00557c4748b5391..24cf97cdd40628db34fc4a9dbf893a8a75d6d98b 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        utils.cpp
+// Name:        src/mac/carbon/utils.cpp
 // Purpose:     Various utilities
 // Author:      Stefan Csomor
 // Modified by:
 // Purpose:     Various utilities
 // Author:      Stefan Csomor
 // Modified by:
@@ -9,11 +9,6 @@
 // Licence:       wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:       wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-// Note: this is done in utilscmn.cpp now.
-// #pragma implementation "utils.h"
-#endif
-
 #include "wx/wxprec.h"
 
 #include "wx/utils.h"
 #include "wx/wxprec.h"
 
 #include "wx/utils.h"
 #include "MoreFilesX.h"
 
 #ifndef __DARWIN__
 #include "MoreFilesX.h"
 
 #ifndef __DARWIN__
-#include <Threads.h>
-#include <Sound.h>
+    #include <Threads.h>
+    #include <Sound.h>
 #endif
 
 #if wxUSE_GUI
 #if TARGET_API_MAC_OSX
 #endif
 
 #if wxUSE_GUI
 #if TARGET_API_MAC_OSX
-#include <CoreServices/CoreServices.h>
+    #include <CoreServices/CoreServices.h>
 #else
 #else
-#include <DriverServices.h>
-#include <Multiprocessing.h>
+    #include <DriverServices.h>
+    #include <Multiprocessing.h>
 #endif
 
 #endif
 
-#include <ATSUnicode.h>
-#include <TextCommon.h>
-#include <TextEncodingConverter.h>
+#ifdef __DARWIN__
+    #include <Carbon/Carbon.h>
+#else
+    #include <ATSUnicode.h>
+    #include <TextCommon.h>
+    #include <TextEncodingConverter.h>
+#endif
 #endif // wxUSE_GUI
 
 #endif // wxUSE_GUI
 
-#include  "wx/mac/private.h"  // includes mac headers
+#include "wx/mac/private.h"
 
 #if defined(__MWERKS__) && wxUSE_UNICODE
     #include <wtime.h>
 
 #if defined(__MWERKS__) && wxUSE_UNICODE
     #include <wtime.h>
@@ -73,12 +72,12 @@ static int DoGetOSVersion(int *majorVsn, int *minorVsn)
     // are there x-platform conventions ?
 
     Gestalt(gestaltSystemVersion, &theSystem) ;
     // are there x-platform conventions ?
 
     Gestalt(gestaltSystemVersion, &theSystem) ;
-    if (minorVsn != NULL) {
-        *minorVsn = (theSystem & 0xFF ) ;
-    }
-    if (majorVsn != NULL) {
-        *majorVsn = (theSystem >> 8 ) ;
-    }
+    if (minorVsn != NULL)
+        *minorVsn = (theSystem & 0xFF) ;
+
+    if (majorVsn != NULL)
+        *majorVsn = (theSystem >> 8) ;
+
 #ifdef __DARWIN__
     return wxMAC_DARWIN;
 #else
 #ifdef __DARWIN__
     return wxMAC_DARWIN;
 #else
@@ -93,7 +92,7 @@ static int DoGetOSVersion(int *majorVsn, int *minorVsn)
 // debugging support
 // ----------------------------------------------------------------------------
 
 // debugging support
 // ----------------------------------------------------------------------------
 
-#if defined(__WXMAC__) && !defined(__DARWIN__) && defined(__MWERKS__) && (__MWERKS__ >= 0x2400)
+#if defined(__WXDEBUG__) && defined(__WXMAC__) && !defined(__DARWIN__) && defined(__MWERKS__) && (__MWERKS__ >= 0x2400)
 
 // MetroNub stuff doesn't seem to work in CodeWarrior 5.3 Carbon builds...
 
 
 // MetroNub stuff doesn't seem to work in CodeWarrior 5.3 Carbon builds...
 
@@ -107,11 +106,11 @@ static int DoGetOSVersion(int *majorVsn, int *minorVsn)
 
 #if TARGET_API_MAC_CARBON
 
 
 #if TARGET_API_MAC_CARBON
 
-    #include <CodeFragments.h>
+#include <CodeFragments.h>
 
 
-    extern "C" long CallUniversalProc(UniversalProcPtr theProcPtr, ProcInfoType procInfo, ...);
+extern "C" long CallUniversalProc(UniversalProcPtr theProcPtr, ProcInfoType procInfo, ...);
 
 
-    ProcPtr gCallUniversalProc_Proc = NULL;
+ProcPtr gCallUniversalProc_Proc = NULL;
 
 #endif
 
 
 #endif
 
@@ -119,9 +118,6 @@ static MetroNubUserEntryBlock*    gMetroNubEntry = NULL;
 
 static long fRunOnce = false;
 
 
 static long fRunOnce = false;
 
-/* ---------------------------------------------------------------------------
-        IsMetroNubInstalled
-   --------------------------------------------------------------------------- */
 
 Boolean IsMetroNubInstalled()
 {
 
 Boolean IsMetroNubInstalled()
 {
@@ -134,11 +130,10 @@ Boolean IsMetroNubInstalled()
 
         if (Gestalt(gestaltSystemVersion, &value) == noErr && value < 0x1000)
         {
 
         if (Gestalt(gestaltSystemVersion, &value) == noErr && value < 0x1000)
         {
-            /* look for MetroNub's Gestalt selector */
+            // look for MetroNub's Gestalt selector
             if (Gestalt(kMetroNubUserSignature, &result) == noErr)
             {
             if (Gestalt(kMetroNubUserSignature, &result) == noErr)
             {
-
-            #if TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_CARBON
                 if (gCallUniversalProc_Proc == NULL)
                 {
                     CFragConnectionID   connectionID;
                 if (gCallUniversalProc_Proc == NULL)
                 {
                     CFragConnectionID   connectionID;
@@ -167,17 +162,19 @@ Boolean IsMetroNubInstalled()
                         goto end;
                     }
                 }
                         goto end;
                     }
                 }
-            #endif
+#endif
 
                 {
                     MetroNubUserEntryBlock* block = (MetroNubUserEntryBlock *)result;
 
 
                 {
                     MetroNubUserEntryBlock* block = (MetroNubUserEntryBlock *)result;
 
-                    /* make sure the version of the API is compatible */
+                    // make sure the version of the API is compatible
                     if (block->apiLowVersion <= kMetroNubUserAPIVersion &&
                         kMetroNubUserAPIVersion <= block->apiHiVersion)
                     if (block->apiLowVersion <= kMetroNubUserAPIVersion &&
                         kMetroNubUserAPIVersion <= block->apiHiVersion)
-                        gMetroNubEntry = block;        /* success! */
+                    {
+                        // success!
+                        gMetroNubEntry = block; 
+                    }
                 }
                 }
-
             }
         }
     }
             }
         }
     }
@@ -191,28 +188,20 @@ end:
 #endif
 }
 
 #endif
 }
 
-/* ---------------------------------------------------------------------------
-        IsMWDebuggerRunning                                            [v1 API]
-   --------------------------------------------------------------------------- */
-
 Boolean IsMWDebuggerRunning()
 {
     if (IsMetroNubInstalled())
         return CallIsDebuggerRunningProc(gMetroNubEntry->isDebuggerRunning);
 Boolean IsMWDebuggerRunning()
 {
     if (IsMetroNubInstalled())
         return CallIsDebuggerRunningProc(gMetroNubEntry->isDebuggerRunning);
-    else
-        return false;
-}
 
 
-/* ---------------------------------------------------------------------------
-        AmIBeingMWDebugged                                            [v1 API]
-   --------------------------------------------------------------------------- */
+    return false;
+}
 
 Boolean AmIBeingMWDebugged()
 {
     if (IsMetroNubInstalled())
         return CallAmIBeingDebuggedProc(gMetroNubEntry->amIBeingDebugged);
 
 Boolean AmIBeingMWDebugged()
 {
     if (IsMetroNubInstalled())
         return CallAmIBeingDebuggedProc(gMetroNubEntry->amIBeingDebugged);
-    else
-        return false;
+
+    return false;
 }
 
 extern bool WXDLLEXPORT wxIsDebuggerRunning()
 }
 
 extern bool WXDLLEXPORT wxIsDebuggerRunning()
@@ -239,10 +228,23 @@ bool wxGetFullHostName(wxChar *buf, int maxSize)
     return wxGetHostName(buf, maxSize);
 }
 
     return wxGetHostName(buf, maxSize);
 }
 
+// Get user ID e.g. jacs
+bool wxGetUserId(wxChar *buf, int maxSize)
+{
+    return wxGetUserName( buf , maxSize ) ;
+}
+
+const wxChar* wxGetHomeDir(wxString *pstr)
+{
+    *pstr = wxMacFindFolder( (short) kOnSystemDisk, kPreferencesFolderType, kDontCreateFolder ) ;
+    return pstr->c_str() ;
+}
+
 // Get hostname only (without domain name)
 bool wxGetHostName(wxChar *buf, int maxSize)
 {
     // Gets Chooser name of user by examining a System resource.
 // Get hostname only (without domain name)
 bool wxGetHostName(wxChar *buf, int maxSize)
 {
     // Gets Chooser name of user by examining a System resource.
+    buf[0] = 0 ;
 
     const short kComputerNameID = -16413;
 
 
     const short kComputerNameID = -16413;
 
@@ -259,28 +261,15 @@ bool wxGetHostName(wxChar *buf, int maxSize)
         ReleaseResource( (Handle) chooserName ) ;
         wxStrncpy( buf , name , maxSize - 1 ) ;
     }
         ReleaseResource( (Handle) chooserName ) ;
         wxStrncpy( buf , name , maxSize - 1 ) ;
     }
-    else
-        buf[0] = 0 ;
 
     return true;
 }
 
 
     return true;
 }
 
-// Get user ID e.g. jacs
-bool wxGetUserId(wxChar *buf, int maxSize)
-{
-  return wxGetUserName( buf , maxSize ) ;
-}
-
-const wxChar* wxGetHomeDir(wxString *pstr)
-{
-    *pstr = wxMacFindFolder(  (short) kOnSystemDisk, kPreferencesFolderType, kDontCreateFolder ) ;
-    return pstr->c_str() ;
-}
-
 // Get user name e.g. Stefan Csomor
 bool wxGetUserName(wxChar *buf, int maxSize)
 {
     // Gets Chooser name of user by examining a System resource.
 // Get user name e.g. Stefan Csomor
 bool wxGetUserName(wxChar *buf, int maxSize)
 {
     // Gets Chooser name of user by examining a System resource.
+    buf[0] = 0 ;
 
     const short kChooserNameID = -16096;
 
 
     const short kChooserNameID = -16096;
 
@@ -297,8 +286,6 @@ bool wxGetUserName(wxChar *buf, int maxSize)
         ReleaseResource( (Handle) chooserName ) ;
         wxStrncpy( buf , name , maxSize - 1 ) ;
     }
         ReleaseResource( (Handle) chooserName ) ;
         wxStrncpy( buf , name , maxSize - 1 ) ;
     }
-    else
-        buf[0] = 0 ;
 
     return true;
 }
 
     return true;
 }
@@ -322,9 +309,7 @@ WXDLLEXPORT bool wxSetEnv(const wxString& var, const wxChar *value)
     return false ;
 }
 
     return false ;
 }
 
-//
 // Execute a program in an Interactive Shell
 // Execute a program in an Interactive Shell
-//
 bool wxShell(const wxString& command)
 {
     // TODO
 bool wxShell(const wxString& command)
 {
     // TODO
@@ -393,8 +378,10 @@ void wxBell()
 wxToolkitInfo& wxConsoleAppTraits::GetToolkitInfo()
 {
     static wxToolkitInfo info;
 wxToolkitInfo& wxConsoleAppTraits::GetToolkitInfo()
 {
     static wxToolkitInfo info;
+
     info.os = DoGetOSVersion(&info.versionMajor, &info.versionMinor);
     info.name = _T("wxBase");
     info.os = DoGetOSVersion(&info.versionMajor, &info.versionMinor);
     info.name = _T("wxBase");
+
     return info;
 }
 
     return info;
 }
 
@@ -405,13 +392,16 @@ wxToolkitInfo& wxConsoleAppTraits::GetToolkitInfo()
 wxToolkitInfo& wxGUIAppTraits::GetToolkitInfo()
 {
     static wxToolkitInfo info;
 wxToolkitInfo& wxGUIAppTraits::GetToolkitInfo()
 {
     static wxToolkitInfo info;
+
     info.os = DoGetOSVersion(&info.versionMajor, &info.versionMinor);
     info.shortName = _T("mac");
     info.name = _T("wxMac");
     info.os = DoGetOSVersion(&info.versionMajor, &info.versionMinor);
     info.shortName = _T("mac");
     info.name = _T("wxMac");
+
 #ifdef __WXUNIVERSAL__
     info.shortName << _T("univ");
     info.name << _T("/wxUniversal");
 #endif
 #ifdef __WXUNIVERSAL__
     info.shortName << _T("univ");
     info.name << _T("/wxUniversal");
 #endif
+
     return info;
 }
 
     return info;
 }
 
@@ -461,9 +451,9 @@ bool wxGetResource(const wxString& section, const wxString& entry, float *value,
     {
         *value = (float)strtod(s, NULL);
         delete[] s;
     {
         *value = (float)strtod(s, NULL);
         delete[] s;
-        return true;
     }
     }
-    else return false;
+
+    return succ;
 }
 
 bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file)
 }
 
 bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file)
@@ -474,9 +464,9 @@ bool wxGetResource(const wxString& section, const wxString& entry, long *value,
     {
         *value = strtol(s, NULL, 10);
         delete[] s;
     {
         *value = strtol(s, NULL, 10);
         delete[] s;
-        return true;
     }
     }
-    else return false;
+
+    return succ;
 }
 
 bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file)
 }
 
 bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file)
@@ -487,9 +477,9 @@ bool wxGetResource(const wxString& section, const wxString& entry, int *value, c
     {
         *value = (int)strtol(s, NULL, 10);
         delete[] s;
     {
         *value = (int)strtol(s, NULL, 10);
         delete[] s;
-        return true;
     }
     }
-    else return false;
+
+    return succ;
 }
 #endif // wxUSE_RESOURCES
 
 }
 #endif // wxUSE_RESOURCES
 
@@ -581,7 +571,7 @@ int wxDisplayDepth()
 
     int theDepth = 8;
     theMaxDevice = GetMaxDevice(&globRect);
 
     int theDepth = 8;
     theMaxDevice = GetMaxDevice(&globRect);
-    if (theMaxDevice != nil)
+    if (theMaxDevice != NULL)
         theDepth = (**(**theMaxDevice).gdPMap).pixelSize;
 
     return theDepth ;
         theDepth = (**(**theMaxDevice).gdPMap).pixelSize;
 
     return theDepth ;
@@ -593,12 +583,11 @@ void wxDisplaySize(int *width, int *height)
     BitMap screenBits;
     GetQDGlobalsScreenBits( &screenBits );
 
     BitMap screenBits;
     GetQDGlobalsScreenBits( &screenBits );
 
-    if (width != NULL) {
-        *width = screenBits.bounds.right - screenBits.bounds.left  ;
-    }
-    if (height != NULL) {
+    if (width != NULL)
+        *width = screenBits.bounds.right - screenBits.bounds.left ;
+
+    if (height != NULL)
         *height = screenBits.bounds.bottom - screenBits.bounds.top ;
         *height = screenBits.bounds.bottom - screenBits.bounds.top ;
-    }
 }
 
 void wxDisplaySizeMM(int *width, int *height)
 }
 
 void wxDisplaySizeMM(int *width, int *height)
@@ -607,17 +596,17 @@ void wxDisplaySizeMM(int *width, int *height)
     // on mac 72 is fixed (at least now ;-)
     float cvPt2Mm = 25.4 / 72;
 
     // on mac 72 is fixed (at least now ;-)
     float cvPt2Mm = 25.4 / 72;
 
-    if (width != NULL) {
+    if (width != NULL)
         *width = int( *width * cvPt2Mm );
         *width = int( *width * cvPt2Mm );
-    }
-    if (height != NULL) {
+
+    if (height != NULL)
         *height = int( *height * cvPt2Mm );
         *height = int( *height * cvPt2Mm );
-    }
 }
 
 void wxClientDisplayRect(int *x, int *y, int *width, int *height)
 {
     Rect r ;
 }
 
 void wxClientDisplayRect(int *x, int *y, int *width, int *height)
 {
     Rect r ;
+
     GetAvailableWindowPositioningBounds( GetMainDevice() , &r ) ;
     if ( x )
         *x = r.left ;
     GetAvailableWindowPositioningBounds( GetMainDevice() , &r ) ;
     if ( x )
         *x = r.left ;
@@ -655,20 +644,18 @@ wxChar *wxGetUserHome (const wxString& user)
     return NULL;
 }
 
     return NULL;
 }
 
-bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree)
+bool wxGetDiskSpace(const wxString& path, wxDiskspaceSize_t *pTotal, wxDiskspaceSize_t *pFree)
 {
     if ( path.empty() )
         return false;
 
     wxString p = path ;
 {
     if ( path.empty() )
         return false;
 
     wxString p = path ;
-    if (p[0u] == ':' ) {
+    if (p[0u] == ':' )
       p = wxGetCwd() + p ;
       p = wxGetCwd() + p ;
-    }
 
     int pos = p.Find(':') ;
 
     int pos = p.Find(':') ;
-    if ( pos != wxNOT_FOUND ) {
+    if ( pos != wxNOT_FOUND )
       p = p.Mid(1,pos) ;
       p = p.Mid(1,pos) ;
-    }
 
     p = p + wxT(":") ;
 
 
     p = p + wxT(":") ;
 
@@ -687,9 +674,9 @@ bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree)
             if ( noErr == err )
             {
                 if ( pTotal )
             if ( noErr == err )
             {
                 if ( pTotal )
-                    *pTotal = wxLongLong( totalBytes ) ;
+                    *pTotal = wxDiskspaceSize_t( totalBytes ) ;
                 if ( pFree )
                 if ( pFree )
-                    *pFree = wxLongLong( freeBytes ) ;
+                    *pFree = wxDiskspaceSize_t( freeBytes ) ;
             }
         }
     }
             }
         }
     }
@@ -718,12 +705,10 @@ wxString wxMacMakeStringFromPascal( ConstStringPtr from )
     return wxString( (char*) &from[1] , wxConvLocal , from[0] ) ;
 }
 
     return wxString( (char*) &from[1] , wxConvLocal , from[0] ) ;
 }
 
-
 // ----------------------------------------------------------------------------
 // Common Event Support
 // ----------------------------------------------------------------------------
 
 // ----------------------------------------------------------------------------
 // Common Event Support
 // ----------------------------------------------------------------------------
 
-
 extern ProcessSerialNumber gAppProcess ;
 
 void wxMacWakeUp()
 extern ProcessSerialNumber gAppProcess ;
 
 void wxMacWakeUp()
@@ -736,8 +721,11 @@ void wxMacWakeUp()
     if ( isSame )
     {
 #if TARGET_CARBON
     if ( isSame )
     {
 #if TARGET_CARBON
-        static wxMacCarbonEvent s_wakeupEvent ;
         OSStatus err = noErr ;
         OSStatus err = noErr ;
+
+#if 0
+        // lead sometimes to race conditions, although all calls used should be thread safe ...
+        static wxMacCarbonEvent s_wakeupEvent ;
         if ( !s_wakeupEvent.IsValid() )
         {
            err = s_wakeupEvent.Create( 'WXMC', 'WXMC', GetCurrentEventTime(),
         if ( !s_wakeupEvent.IsValid() )
         {
            err = s_wakeupEvent.Create( 'WXMC', 'WXMC', GetCurrentEventTime(),
@@ -745,12 +733,20 @@ void wxMacWakeUp()
         }
         if ( err == noErr )
         {
         }
         if ( err == noErr )
         {
+            
             if ( IsEventInQueue( GetMainEventQueue() , s_wakeupEvent ) )
                 return ;
             if ( IsEventInQueue( GetMainEventQueue() , s_wakeupEvent ) )
                 return ;
-            s_wakeupEvent.SetTime(0) ;
+            s_wakeupEvent.SetCurrentTime() ;
             err = PostEventToQueue(GetMainEventQueue(), s_wakeupEvent,
             err = PostEventToQueue(GetMainEventQueue(), s_wakeupEvent,
-                                  kEventPriorityHigh);
+                                  kEventPriorityHigh );
         }
         }
+#else
+        wxMacCarbonEvent wakeupEvent ;
+        wakeupEvent.Create( 'WXMC', 'WXMC', GetCurrentEventTime(),
+                            kEventAttributeNone ) ;
+        err = PostEventToQueue(GetMainEventQueue(), wakeupEvent,
+                               kEventPriorityHigh );
+#endif
 #else
         PostEvent( nullEvent , 0 ) ;
 #endif
 #else
         PostEvent( nullEvent , 0 ) ;
 #endif
@@ -769,8 +765,7 @@ void wxMacWakeUp()
 // Native Struct Conversions
 // ----------------------------------------------------------------------------
 
 // Native Struct Conversions
 // ----------------------------------------------------------------------------
 
-
-void wxMacRectToNative( const wxRect *wx , Rect *n ) 
+void wxMacRectToNative( const wxRect *wx , Rect *n )
 {
     n->left = wx->x ;
     n->top = wx->y ;
 {
     n->left = wx->x ;
     n->top = wx->y ;
@@ -778,7 +773,7 @@ void wxMacRectToNative( const wxRect *wx , Rect *n )
     n->bottom = wx->y + wx->height ;
 }
 
     n->bottom = wx->y + wx->height ;
 }
 
-void wxMacNativeToRect( const Rect *n , wxRect* wx ) 
+void wxMacNativeToRect( const Rect *n , wxRect* wx )
 {
     wx->x = n->left ;
     wx->y = n->top ;
 {
     wx->x = n->left ;
     wx->y = n->top ;
@@ -786,13 +781,13 @@ void wxMacNativeToRect( const Rect *n , wxRect* wx )
     wx->height = n->bottom - n->top ;
 }
 
     wx->height = n->bottom - n->top ;
 }
 
-void wxMacPointToNative( const wxPoint* wx , Point *n ) 
+void wxMacPointToNative( const wxPoint* wx , Point *n )
 {
     n->h = wx->x ;
     n->v = wx->y ;
 }
 
 {
     n->h = wx->x ;
     n->v = wx->y ;
 }
 
-void wxMacNativeToPoint( const Point *n , wxPoint* wx ) 
+void wxMacNativeToPoint( const Point *n , wxPoint* wx )
 {
     wx->x = n->h ;
     wx->y = n->v ;
 {
     wx->x = n->h ;
     wx->y = n->v ;
@@ -802,7 +797,6 @@ void wxMacNativeToPoint( const Point *n , wxPoint* wx )
 // Carbon Event Support
 // ----------------------------------------------------------------------------
 
 // Carbon Event Support
 // ----------------------------------------------------------------------------
 
-
 OSStatus wxMacCarbonEvent::GetParameter(EventParamName inName, EventParamType inDesiredType, UInt32 inBufferSize, void * outData)
 {
     return ::GetEventParameter( m_eventRef , inName , inDesiredType , NULL , inBufferSize , NULL , outData ) ;
 OSStatus wxMacCarbonEvent::GetParameter(EventParamName inName, EventParamType inDesiredType, UInt32 inBufferSize, void * outData)
 {
     return ::GetEventParameter( m_eventRef , inName , inDesiredType , NULL , inBufferSize , NULL , outData ) ;
@@ -825,7 +819,7 @@ wxMacControl::wxMacControl(wxWindow* peer , bool isRootControl )
     m_isCompositing = peer->MacGetTopLevelWindow()->MacUsesCompositing() ;
 }
 
     m_isCompositing = peer->MacGetTopLevelWindow()->MacUsesCompositing() ;
 }
 
-wxMacControl::wxMacControl( wxWindow* peer , ControlRef control ) 
+wxMacControl::wxMacControl( wxWindow* peer , ControlRef control )
 {
     Init() ;
     m_peer = peer ;
 {
     Init() ;
     m_peer = peer ;
@@ -880,11 +874,11 @@ OSStatus wxMacControl::SetData(ControlPartCode inPartCode , ResType inTag , Size
     return ::SetControlData( m_controlRef , inPartCode , inTag , inSize , inData ) ;
 }
 
     return ::SetControlData( m_controlRef , inPartCode , inTag , inSize , inData ) ;
 }
 
-OSStatus wxMacControl::SendEvent(  EventRef event , OptionBits inOptions )
+OSStatus wxMacControl::SendEvent( EventRef event , OptionBits inOptions )
 {
 #if TARGET_API_MAC_OSX
     return SendEventToEventTargetWithOptions( event,
 {
 #if TARGET_API_MAC_OSX
     return SendEventToEventTargetWithOptions( event,
-        HIObjectGetEventTarget(  (HIObjectRef) m_controlRef ), inOptions );
+        HIObjectGetEventTarget( (HIObjectRef) m_controlRef ), inOptions );
 #else
     #pragma unused(inOptions)
     return SendEventToEventTarget(event,GetControlEventTarget( m_controlRef ) ) ;
 #else
     #pragma unused(inOptions)
     return SendEventToEventTarget(event,GetControlEventTarget( m_controlRef ) ) ;
@@ -894,13 +888,16 @@ OSStatus wxMacControl::SendEvent(  EventRef event , OptionBits inOptions )
 OSStatus wxMacControl::SendHICommand( HICommand &command , OptionBits inOptions )
 {
     wxMacCarbonEvent event( kEventClassCommand , kEventCommandProcess ) ;
 OSStatus wxMacControl::SendHICommand( HICommand &command , OptionBits inOptions )
 {
     wxMacCarbonEvent event( kEventClassCommand , kEventCommandProcess ) ;
+
     event.SetParameter<HICommand>(kEventParamDirectObject,command) ;
     event.SetParameter<HICommand>(kEventParamDirectObject,command) ;
+
     return SendEvent( event , inOptions ) ;
 }
 
 OSStatus wxMacControl::SendHICommand( UInt32 commandID , OptionBits inOptions  )
 {
     HICommand command ;
     return SendEvent( event , inOptions ) ;
 }
 
 OSStatus wxMacControl::SendHICommand( UInt32 commandID , OptionBits inOptions  )
 {
     HICommand command ;
+
     memset( &command, 0 , sizeof(command) ) ;
     command.commandID = commandID ;
     return SendHICommand( command , inOptions ) ;
     memset( &command, 0 , sizeof(command) ) ;
     command.commandID = commandID ;
     return SendHICommand( command , inOptions ) ;
@@ -908,8 +905,9 @@ OSStatus wxMacControl::SendHICommand( UInt32 commandID , OptionBits inOptions  )
 
 void wxMacControl::Flash( ControlPartCode part , UInt32 ticks )
 {
 
 void wxMacControl::Flash( ControlPartCode part , UInt32 ticks )
 {
-    HiliteControl( m_controlRef , part ) ;
     unsigned long finalTicks ;
     unsigned long finalTicks ;
+
+    HiliteControl( m_controlRef , part ) ;
     Delay( ticks , &finalTicks ) ;
     HiliteControl( m_controlRef , kControlNoPart ) ;
 }
     Delay( ticks , &finalTicks ) ;
     HiliteControl( m_controlRef , kControlNoPart ) ;
 }
@@ -953,8 +951,7 @@ void wxMacControl::SetValueAndRange( SInt32 value , SInt32 minimum , SInt32 maxi
 
 OSStatus wxMacControl::SetFocus( ControlFocusPart focusPart )
 {
 
 OSStatus wxMacControl::SetFocus( ControlFocusPart focusPart )
 {
-    return SetKeyboardFocus(  GetControlOwner( m_controlRef )  ,
-        m_controlRef , focusPart ) ;
+    return SetKeyboardFocus( GetControlOwner( m_controlRef ), m_controlRef, focusPart ) ;
 }
 
 bool wxMacControl::HasFocus() const
 }
 
 bool wxMacControl::HasFocus() const
@@ -964,7 +961,7 @@ bool wxMacControl::HasFocus() const
     return control == m_controlRef ;
 }
 
     return control == m_controlRef ;
 }
 
-void wxMacControl::SetNeedsFocusRect( bool needs ) 
+void wxMacControl::SetNeedsFocusRect( bool needs )
 {
     m_needsFocusRect = needs ;
 }
 {
     m_needsFocusRect = needs ;
 }
@@ -988,13 +985,25 @@ void wxMacControl::SetFont( const wxFont & font , const wxColour& foreground , l
     ControlFontStyleRec fontStyle;
     if ( font.MacGetThemeFontID() != kThemeCurrentPortFont )
     {
     ControlFontStyleRec fontStyle;
     if ( font.MacGetThemeFontID() != kThemeCurrentPortFont )
     {
-        switch( font.MacGetThemeFontID() )
+        switch ( font.MacGetThemeFontID() )
         {
         {
-            case kThemeSmallSystemFont :    fontStyle.font = kControlFontSmallSystemFont ;  break ;
-            case 109 /*mini font */ :       fontStyle.font = -5 ;                           break ;
-            case kThemeSystemFont :         fontStyle.font = kControlFontBigSystemFont ;    break ;
-            default :                       fontStyle.font = kControlFontBigSystemFont ;    break ;
+            case kThemeSmallSystemFont :
+                fontStyle.font = kControlFontSmallSystemFont ;
+                break ;
+
+            case 109 : // mini font
+                fontStyle.font = -5 ;
+                break ;
+
+            case kThemeSystemFont :
+                fontStyle.font = kControlFontBigSystemFont ;
+                break ;
+
+            default :
+                fontStyle.font = kControlFontBigSystemFont ;
+                break ;
         }
         }
+
         fontStyle.flags = kControlUseFontMask ;
     }
     else
         fontStyle.flags = kControlUseFontMask ;
     }
     else
@@ -1018,7 +1027,7 @@ void wxMacControl::SetFont( const wxFont & font , const wxColour& foreground , l
 
     if ( foreground != *wxBLACK )
     {
 
     if ( foreground != *wxBLACK )
     {
-        fontStyle.foreColor = MAC_WXCOLORREF(foreground.GetPixel() ) ;
+        fontStyle.foreColor = MAC_WXCOLORREF( foreground.GetPixel() ) ;
         fontStyle.flags |= kControlUseForeColorMask ;
     }
 
         fontStyle.flags |= kControlUseForeColorMask ;
     }
 
@@ -1037,7 +1046,7 @@ void wxMacControl::SetRange( SInt32 minimum , SInt32 maximum )
     ::SetControl32BitMaximum( m_controlRef , maximum ) ;
 }
 
     ::SetControl32BitMaximum( m_controlRef , maximum ) ;
 }
 
-short wxMacControl::HandleKey(  SInt16 keyCode,  SInt16 charCode, EventModifiers modifiers )
+short wxMacControl::HandleKey( SInt16 keyCode,  SInt16 charCode, EventModifiers modifiers )
 {
     return HandleControlKey( m_controlRef , keyCode , charCode , modifiers ) ;
 }
 {
     return HandleControlKey( m_controlRef , keyCode , charCode , modifiers ) ;
 }
@@ -1110,22 +1119,22 @@ bool wxMacControl::GetNeedsDisplay() const
     if ( m_isCompositing )
     {
         return HIViewGetNeedsDisplay( m_controlRef ) ;
     if ( m_isCompositing )
     {
         return HIViewGetNeedsDisplay( m_controlRef ) ;
-       }
-       else
+    }
+    else
 #endif
 #endif
-       {
-               if ( !IsVisible() )
+    {
+        if ( !IsVisible() )
             return false ;
             return false ;
-                       
-           Rect controlBounds ; 
-           GetControlBounds( m_controlRef, &controlBounds ) ;
-           RgnHandle rgn = NewRgn() ;
-               GetWindowRegion ( GetControlOwner( m_controlRef ) , kWindowUpdateRgn , rgn ) ;
-               Boolean intersect = RectInRgn ( &controlBounds , rgn ) ;
-               DisposeRgn( rgn ) ;
-               return intersect ;
-       }
 
 
+        Rect controlBounds ;
+        GetControlBounds( m_controlRef, &controlBounds ) ;
+        RgnHandle rgn = NewRgn() ;
+        GetWindowRegion ( GetControlOwner( m_controlRef ) , kWindowUpdateRgn , rgn ) ;
+        Boolean intersect = RectInRgn ( &controlBounds , rgn ) ;
+        DisposeRgn( rgn ) ;
+
+        return intersect ;
+    }
 }
 #endif
 
 }
 #endif
 
@@ -1133,7 +1142,7 @@ void wxMacControl::SetNeedsDisplay( RgnHandle where )
 {
     if ( !IsVisible() )
         return ;
 {
     if ( !IsVisible() )
         return ;
-        
+
 #if TARGET_API_MAC_OSX
     if ( m_isCompositing )
     {
 #if TARGET_API_MAC_OSX
     if ( m_isCompositing )
     {
@@ -1142,12 +1151,12 @@ void wxMacControl::SetNeedsDisplay( RgnHandle where )
     else
 #endif
     {
     else
 #endif
     {
-        Rect controlBounds ; 
+        Rect controlBounds ;
         GetControlBounds( m_controlRef, &controlBounds ) ;
         RgnHandle update = NewRgn() ;
         CopyRgn( where , update ) ;
         OffsetRgn( update , controlBounds.left , controlBounds.top ) ;
         GetControlBounds( m_controlRef, &controlBounds ) ;
         RgnHandle update = NewRgn() ;
         CopyRgn( where , update ) ;
         OffsetRgn( update , controlBounds.left , controlBounds.top ) ;
-        InvalWindowRgn( GetControlOwner( m_controlRef) , update ) ; 
+        InvalWindowRgn( GetControlOwner( m_controlRef) , update ) ;
     }
 }
 
     }
 }
 
@@ -1172,7 +1181,8 @@ void wxMacControl::SetNeedsDisplay( Rect* where )
     else
 #endif
     {
     else
 #endif
     {
-        Rect controlBounds ; 
+        Rect controlBounds ;
+
         GetControlBounds( m_controlRef, &controlBounds ) ;
         if ( where )
         {
         GetControlBounds( m_controlRef, &controlBounds ) ;
         if ( where )
         {
@@ -1180,7 +1190,8 @@ void wxMacControl::SetNeedsDisplay( Rect* where )
             OffsetRect( &whereLocal , controlBounds.left , controlBounds.top ) ;
             SectRect( &controlBounds , &whereLocal, &controlBounds ) ;
         }
             OffsetRect( &whereLocal , controlBounds.left , controlBounds.top ) ;
             SectRect( &controlBounds , &whereLocal, &controlBounds ) ;
         }
-        InvalWindowRect( GetControlOwner( m_controlRef) , &controlBounds ) ; 
+
+        InvalWindowRect( GetControlOwner( m_controlRef) , &controlBounds ) ;
     }
 }
 
     }
 }
 
@@ -1190,6 +1201,7 @@ void  wxMacControl::Convert( wxPoint *pt , wxMacControl *from , wxMacControl *to
     if ( from->m_peer->MacGetTopLevelWindow()->MacUsesCompositing() )
     {
         HIPoint hiPoint ;
     if ( from->m_peer->MacGetTopLevelWindow()->MacUsesCompositing() )
     {
         HIPoint hiPoint ;
+
         hiPoint.x = pt->x ;
         hiPoint.y = pt->y ;
         HIViewConvertPoint( &hiPoint , from->m_controlRef , to->m_controlRef  ) ;
         hiPoint.x = pt->x ;
         hiPoint.y = pt->y ;
         HIViewConvertPoint( &hiPoint , from->m_controlRef , to->m_controlRef  ) ;
@@ -1199,15 +1211,15 @@ void  wxMacControl::Convert( wxPoint *pt , wxMacControl *from , wxMacControl *to
     else
 #endif
     {
     else
 #endif
     {
-        Rect fromRect ;
-        Rect toRect ;
+        Rect fromRect, toRect ;
+
         GetControlBounds( from->m_controlRef , &fromRect ) ;
         GetControlBounds( to->m_controlRef , &toRect ) ;
         if ( from->m_isRootControl )
             fromRect.left = fromRect.top = 0 ;
         if ( to->m_isRootControl )
         GetControlBounds( from->m_controlRef , &fromRect ) ;
         GetControlBounds( to->m_controlRef , &toRect ) ;
         if ( from->m_isRootControl )
             fromRect.left = fromRect.top = 0 ;
         if ( to->m_isRootControl )
-            toRect.left = toRect.top = 0 ; 
-                    
+            toRect.left = toRect.top = 0 ;
+
         pt->x = pt->x + fromRect.left - toRect.left ;
         pt->y = pt->y + fromRect.top - toRect.top ;
     }
         pt->x = pt->x + fromRect.left - toRect.left ;
         pt->y = pt->y + fromRect.top - toRect.top ;
     }
@@ -1235,33 +1247,31 @@ void wxMacControl::SetRect( Rect *r )
             GetControlBounds( m_controlRef , &former ) ;
             InvalWindowRect( GetControlOwner( m_controlRef ) , &former ) ;
         }
             GetControlBounds( m_controlRef , &former ) ;
             InvalWindowRect( GetControlOwner( m_controlRef ) , &former ) ;
         }
-        
+
         Rect controlBounds = *r ;
         Rect controlBounds = *r ;
-        
+
         // since the rect passed in is always (even in non-compositing) relative
         // to the (native) parent, we have to adjust to window relative here
         wxMacControl* parent = m_peer->GetParent()->GetPeer() ;
         // since the rect passed in is always (even in non-compositing) relative
         // to the (native) parent, we have to adjust to window relative here
         wxMacControl* parent = m_peer->GetParent()->GetPeer() ;
-        if( parent->m_isRootControl == false )
+        if ( !parent->m_isRootControl )
         {
             Rect superRect ;
             GetControlBounds( parent->m_controlRef , &superRect ) ;
             OffsetRect( &controlBounds , superRect.left , superRect.top ) ;
         }
         {
             Rect superRect ;
             GetControlBounds( parent->m_controlRef , &superRect ) ;
             OffsetRect( &controlBounds , superRect.left , superRect.top ) ;
         }
-        
+
         SetControlBounds( m_controlRef , &controlBounds ) ;
         if ( vis )
         SetControlBounds( m_controlRef , &controlBounds ) ;
         if ( vis )
-        {
             InvalWindowRect( GetControlOwner( m_controlRef ) , &controlBounds ) ;
             InvalWindowRect( GetControlOwner( m_controlRef ) , &controlBounds ) ;
-        }
     }
 }
 
 void wxMacControl::GetRect( Rect *r )
 {
     GetControlBounds( m_controlRef , r ) ;
     }
 }
 
 void wxMacControl::GetRect( Rect *r )
 {
     GetControlBounds( m_controlRef , r ) ;
-    if ( m_isCompositing == false )
+    if ( !m_isCompositing )
     {
     {
-        // correct the case of the root control 
+        // correct the case of the root control
         if ( m_isRootControl )
         {
             WindowRef wr = GetControlOwner( m_controlRef ) ;
         if ( m_isRootControl )
         {
             WindowRef wr = GetControlOwner( m_controlRef ) ;
@@ -1271,10 +1281,10 @@ void wxMacControl::GetRect( Rect *r )
             r->left = 0 ;
             r->top = 0 ;
         }
             r->left = 0 ;
             r->top = 0 ;
         }
-        else 
+        else
         {
             wxMacControl* parent = m_peer->GetParent()->GetPeer() ;
         {
             wxMacControl* parent = m_peer->GetParent()->GetPeer() ;
-            if( parent->m_isRootControl == false )
+            if ( !parent->m_isRootControl )
             {
                 Rect superRect ;
                 GetControlBounds( parent->m_controlRef , &superRect ) ;
             {
                 Rect superRect ;
                 GetControlBounds( parent->m_controlRef , &superRect ) ;
@@ -1292,10 +1302,11 @@ void wxMacControl::GetRectInWindowCoords( Rect *r )
 void wxMacControl::GetBestRect( Rect *r )
 {
     short   baselineoffset ;
 void wxMacControl::GetBestRect( Rect *r )
 {
     short   baselineoffset ;
+
     GetBestControlRect( m_controlRef , r , &baselineoffset ) ;
 }
 
     GetBestControlRect( m_controlRef , r , &baselineoffset ) ;
 }
 
-void wxMacControl::SetTitle( const wxString &title )
+void wxMacControl::SetLabel( const wxString &title )
 {
     wxFontEncoding encoding;
 
 {
     wxFontEncoding encoding;
 
@@ -1304,7 +1315,7 @@ void wxMacControl::SetTitle( const wxString &title )
     else
         encoding = wxFont::GetDefaultEncoding();
 
     else
         encoding = wxFont::GetDefaultEncoding();
 
-    UMASetControlTitle(  m_controlRef , title , encoding ) ;
+    UMASetControlTitle( m_controlRef , title , encoding ) ;
 }
 
 void wxMacControl::GetFeatures( UInt32 * features )
 }
 
 void wxMacControl::GetFeatures( UInt32 * features )
@@ -1315,16 +1326,18 @@ void wxMacControl::GetFeatures( UInt32 * features )
 OSStatus wxMacControl::GetRegion( ControlPartCode partCode , RgnHandle region )
 {
     OSStatus err = GetControlRegion( m_controlRef , partCode , region ) ;
 OSStatus wxMacControl::GetRegion( ControlPartCode partCode , RgnHandle region )
 {
     OSStatus err = GetControlRegion( m_controlRef , partCode , region ) ;
-    if ( m_isCompositing == false )
+    if ( !m_isCompositing )
     {
         if ( !m_isRootControl )
         {
             Rect r ;
     {
         if ( !m_isRootControl )
         {
             Rect r ;
+
             GetControlBounds(m_controlRef, &r ) ;
             if ( !EmptyRgn( region ) )
             GetControlBounds(m_controlRef, &r ) ;
             if ( !EmptyRgn( region ) )
-                OffsetRgn( region , -r.left , -r.top ) ; 
+                OffsetRgn( region , -r.left , -r.top ) ;
         }
     }
         }
     }
+
     return err ;
 }
 
     return err ;
 }
 
@@ -1338,7 +1351,6 @@ OSStatus wxMacControl::SetZOrder( bool above , wxMacControl* other )
 #endif
 }
 
 #endif
 }
 
-
 #if TARGET_API_MAC_OSX
 // SetNeedsDisplay would not invalidate the children
 static void InvalidateControlAndChildren( HIViewRef control )
 #if TARGET_API_MAC_OSX
 // SetNeedsDisplay would not invalidate the children
 static void InvalidateControlAndChildren( HIViewRef control )
@@ -1348,14 +1360,17 @@ static void InvalidateControlAndChildren( HIViewRef control )
     OSStatus err = CountSubControls( control , &childrenCount ) ;
     if ( err == errControlIsNotEmbedder )
         return ;
     OSStatus err = CountSubControls( control , &childrenCount ) ;
     if ( err == errControlIsNotEmbedder )
         return ;
+
     wxASSERT_MSG( err == noErr , wxT("Unexpected error when accessing subcontrols") ) ;
 
     wxASSERT_MSG( err == noErr , wxT("Unexpected error when accessing subcontrols") ) ;
 
-    for ( UInt16 i = childrenCount ; i >=1  ; --i )
+    for ( UInt16 i = childrenCount ; i >=1 ; --i )
     {
         HIViewRef child ;
     {
         HIViewRef child ;
+
         err = GetIndexedSubControl( control , i , & child ) ;
         if ( err == errControlIsNotEmbedder )
             return ;
         err = GetIndexedSubControl( control , i , & child ) ;
         if ( err == errControlIsNotEmbedder )
             return ;
+
         InvalidateControlAndChildren( child ) ;
     }
 }
         InvalidateControlAndChildren( child ) ;
     }
 }
@@ -1368,33 +1383,34 @@ void wxMacControl::InvalidateWithChildren()
 #endif
 }
 
 #endif
 }
 
-void wxMacControl::ScrollRect( wxRect *r , int dx , int dy ) 
+void wxMacControl::ScrollRect( wxRect *r , int dx , int dy )
 {
 {
-       wxASSERT( r != NULL ) ;
+    wxASSERT( r != NULL ) ;
+
 #if TARGET_API_MAC_OSX
 #if TARGET_API_MAC_OSX
-       if ( m_isCompositing )
-       {
-               HIRect scrollarea = CGRectMake( r->x , r->y , r->width , r->height) ;
+    if ( m_isCompositing )
+    {
+        HIRect scrollarea = CGRectMake( r->x , r->y , r->width , r->height) ;
         HIViewScrollRect ( m_controlRef , &scrollarea , dx ,dy ) ;
         HIViewScrollRect ( m_controlRef , &scrollarea , dx ,dy ) ;
-       }
-       else
+    }
+    else
 #endif
 #endif
-       {
-               Rect bounds ;
-               GetControlBounds( m_controlRef , &bounds ) ;
-               Point topleft = { bounds.top , bounds.left } ;
-               bounds.left += r->x ;
-               bounds.top += r->y ;
-               bounds.bottom = bounds.top + r->height ;
-               bounds.right = bounds.left + r->width ;
-               wxMacWindowClipper clip( m_peer ) ;
-               RgnHandle updateRgn = NewRgn() ;
-               ::ScrollRect( &bounds , dx , dy , updateRgn ) ;
-               InvalWindowRgn( GetControlOwner( m_controlRef )  ,  updateRgn ) ;
-       }
+    {
+        Rect bounds ;
+
+        GetControlBounds( m_controlRef , &bounds ) ;
+        bounds.left += r->x ;
+        bounds.top += r->y ;
+        bounds.bottom = bounds.top + r->height ;
+        bounds.right = bounds.left + r->width ;
+        wxMacWindowClipper clip( m_peer ) ;
+        RgnHandle updateRgn = NewRgn() ;
+        ::ScrollRect( &bounds , dx , dy , updateRgn ) ;
+        InvalWindowRgn( GetControlOwner( m_controlRef ) , updateRgn ) ;
+        DisposeRgn( updateRgn );
+    }
 }
 
 }
 
-
 // SetNeedsDisplay would not invalidate the children
 
 //
 // SetNeedsDisplay would not invalidate the children
 
 //
@@ -1499,32 +1515,31 @@ OSStatus wxMacControl::SetTabEnabled( SInt16 tabNo , bool enable )
 #ifdef __WXMAC_OSX__
 // snippets from Sketch Sample from Apple :
 
 #ifdef __WXMAC_OSX__
 // snippets from Sketch Sample from Apple :
 
-#define        kGenericRGBProfilePathStr       "/System/Library/ColorSync/Profiles/Generic RGB Profile.icc"
+#define kGenericRGBProfilePathStr "/System/Library/ColorSync/Profiles/Generic RGB Profile.icc"
+
 /*
 /*
-    This function locates, opens, and returns the profile reference for the calibrated 
+    This function locates, opens, and returns the profile reference for the calibrated
     Generic RGB color space. It is up to the caller to call CMCloseProfile when done
     with the profile reference this function returns.
 */
     Generic RGB color space. It is up to the caller to call CMCloseProfile when done
     with the profile reference this function returns.
 */
-CMProfileRef wxMacOpenGenericProfile(void)
+CMProfileRef wxMacOpenGenericProfile()
 {
     static CMProfileRef cachedRGBProfileRef = NULL;
 {
     static CMProfileRef cachedRGBProfileRef = NULL;
-    
+
     // we only create the profile reference once
     if (cachedRGBProfileRef == NULL)
     {
     // we only create the profile reference once
     if (cachedRGBProfileRef == NULL)
     {
-               CMProfileLocation       loc;
-       
-               loc.locType = cmPathBasedProfile;
-               strcpy(loc.u.pathLoc.path, kGenericRGBProfilePathStr);
-       
-               verify_noerr( CMOpenProfile(&cachedRGBProfileRef, &loc) );
+        CMProfileLocation loc;
+
+        loc.locType = cmPathBasedProfile;
+        strcpy(loc.u.pathLoc.path, kGenericRGBProfilePathStr);
+
+        verify_noerr( CMOpenProfile(&cachedRGBProfileRef, &loc) );
     }
 
     }
 
+    // clone the profile reference so that the caller has their own reference, not our cached one
     if (cachedRGBProfileRef)
     if (cachedRGBProfileRef)
-    {
-               // clone the profile reference so that the caller has their own reference, not our cached one
-               CMCloneProfileRef(cachedRGBProfileRef);   
-    }
+        CMCloneProfileRef(cachedRGBProfileRef);
 
     return cachedRGBProfileRef;
 }
 
     return cachedRGBProfileRef;
 }
@@ -1534,31 +1549,50 @@ CMProfileRef wxMacOpenGenericProfile(void)
     not release the returned value unless the caller retains it first. Usually callers
     of this routine will immediately use the returned colorspace with CoreGraphics
     so they typically do not need to retain it themselves.
     not release the returned value unless the caller retains it first. Usually callers
     of this routine will immediately use the returned colorspace with CoreGraphics
     so they typically do not need to retain it themselves.
-    
+
     This function creates the generic RGB color space once and hangs onto it so it can
     return it whenever this function is called.
 */
 
 CGColorSpaceRef wxMacGetGenericRGBColorSpace()
 {
     This function creates the generic RGB color space once and hangs onto it so it can
     return it whenever this function is called.
 */
 
 CGColorSpaceRef wxMacGetGenericRGBColorSpace()
 {
-    static CGColorSpaceRef genericRGBColorSpace = NULL;
-
-       if (genericRGBColorSpace == NULL)
-       {
-               CMProfileRef genericRGBProfile = wxMacOpenGenericProfile();
-       
-               if (genericRGBProfile)
-               {
-                       genericRGBColorSpace = CGColorSpaceCreateWithPlatformColorSpace(genericRGBProfile);
-                       wxASSERT_MSG( genericRGBColorSpace != NULL, wxT("couldn't create the generic RGB color space") ) ;
-                       
-                       // we opened the profile so it is up to us to close it
-                       CMCloseProfile(genericRGBProfile); 
-               }
-       }
+    static wxMacCFRefHolder<CGColorSpaceRef> genericRGBColorSpace ;
+
+    if (genericRGBColorSpace == NULL)
+    {
+        if ( UMAGetSystemVersion() >= 0x1040 )
+        {
+            genericRGBColorSpace.Set( CGColorSpaceCreateWithName( CFSTR("kCGColorSpaceGenericRGB") ) ) ;
+        }
+        else
+        {
+            CMProfileRef genericRGBProfile = wxMacOpenGenericProfile();
+
+            if (genericRGBProfile)
+            {
+                genericRGBColorSpace.Set( CGColorSpaceCreateWithPlatformColorSpace(genericRGBProfile) ) ;
+
+                wxASSERT_MSG( genericRGBColorSpace != NULL, wxT("couldn't create the generic RGB color space") ) ;
+
+                // we opened the profile so it is up to us to close it
+                CMCloseProfile(genericRGBProfile); 
+            }
+        }
+    }
+
     return genericRGBColorSpace;
 }
 #endif
 
     return genericRGBColorSpace;
 }
 #endif
 
-#endif // wxUSE_GUI
+wxMacPortSaver::wxMacPortSaver( GrafPtr port )
+{
+    ::GetPort( &m_port ) ;
+    ::SetPort( port ) ;
+}
 
 
+wxMacPortSaver::~wxMacPortSaver()
+{
+    ::SetPort( m_port ) ;
+}
+
+#endif // wxUSE_GUI