]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/utils_osx.cpp
Fix for #15520: wxRichTextCtrl: Drawing the selection doesn't respect its container...
[wxWidgets.git] / src / osx / utils_osx.cpp
index 0a66f1363bc2be5c7e74ba2717b4ee32d72d886e..bfcf65f57c514bdb25efd2992f0700eaa5851c49 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     1998-01-01
-// RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // #include "MoreFilesX.h"
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
-    #include <AudioToolbox/AudioServices.h>
-#endif
+#include <AudioToolbox/AudioServices.h>
 
 #include "wx/osx/private.h"
 #include "wx/osx/private/timer.h"
 
 #include "wx/evtloop.h"
 
-#if defined(__MWERKS__) && wxUSE_UNICODE
-#if __MWERKS__ < 0x4100
-    #include <wtime.h>
-#endif
-#endif
-
 // Check whether this window wants to process messages, e.g. Stop button
 // in long calculations.
 bool wxCheckForInterrupt(wxWindow *WXUNUSED(wnd))
@@ -65,6 +56,9 @@ bool wxColourDisplay()
     return true;
 }
 
+
+#if wxOSX_USE_COCOA_OR_CARBON
+
 #if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070) && (MAC_OS_X_VERSION_MIN_REQUIRED < 1060)
 // bring back declaration so that we can support deployment targets < 10_6
 CG_EXTERN size_t CGDisplayBitsPerPixel(CGDirectDisplayID display)
@@ -72,7 +66,6 @@ CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_6,
                             __IPHONE_NA, __IPHONE_NA);
 #endif
 
-#if wxOSX_USE_COCOA_OR_CARBON
 // Returns depth of screen
 int wxDisplayDepth()
 {
@@ -94,6 +87,7 @@ int wxDisplayDepth()
             theDepth = 32; // some reasonable default
 
         CFRelease(encoding);
+        CGDisplayModeRelease(currentMode);
     }
     else
 #endif
@@ -251,9 +245,26 @@ CGColorSpaceRef wxMacGetGenericRGBColorSpace()
 
 CGColorRef wxMacCreateCGColorFromHITheme( ThemeBrush brush )
 {
-    CGColorRef color ;
-    HIThemeBrushCreateCGColor( brush, &color );
-    return color;
+    const int maxcachedbrush = 58+5; // negative indices are for metabrushes, cache down to -5)
+    int brushindex = brush+5;
+    if ( brushindex < 0 || brushindex > maxcachedbrush )
+    {
+        CGColorRef color ;
+        HIThemeBrushCreateCGColor( brush, &color );
+        return color;
+    }
+    else
+    {
+        static bool inited = false;
+        static CGColorRef themecolors[maxcachedbrush+1];
+        if ( !inited )
+        {
+            for ( int i = 0 ; i <= maxcachedbrush ; ++i )
+                HIThemeBrushCreateCGColor( i-5, &themecolors[i] );
+            inited = true;
+        }
+        return CGColorRetain(themecolors[brushindex ]);
+    }
 }
 
 //---------------------------------------------------------------------------