]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/core/cfstring.cpp
Made wxWindow::HasScrollbar() do what it says.
[wxWidgets.git] / src / osx / core / cfstring.cpp
index 2b0bfbe82a68f7ec7883b1f8dbbb6e2f7bf7c653..3d10e29b7e071780fdf2a477314e81af5f6a24d9 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <CoreFoundation/CoreFoundation.h>
 
+
 void wxMacConvertNewlines13To10( char * data )
 {
     char * buf = data ;
@@ -610,15 +611,20 @@ wxCFStringRef::wxCFStringRef( const wxString &st , wxFontEncoding WXUNUSED_IN_UN
 #if wxUSE_UNICODE
 #if wxUSE_UNICODE_WCHAR
         // native = wchar_t 4 bytes for us
-        reset( CFStringCreateWithBytes( kCFAllocatorDefault,
-            (const UInt8*)str.wc_str() , str.length()*4, kCFStringEncodingUTF32, false /* no BOM */ ) );
+        const wchar_t * const data = str.wc_str();
+        const size_t size = str.length()*sizeof(wchar_t);
+        CFStringBuiltInEncodings cfencoding = kCFStringEncodingUTF32Native;
 #elif wxUSE_UNICODE_UTF8
         // native = utf8
-        reset( CFStringCreateWithBytes( kCFAllocatorDefault,
-            (const UInt8*) str.utf8_str() , str.utf8_length() , kCFStringEncodingUTF8, false /* no BOM */ ) );
+        const char * const data = str.utf8_str();
+        const size_t size = str.utf8_length();
+        CFStringBuiltInEncodings cfencoding = kCFStringEncodingUTF8;
 #else
-    #error "unsupported unicode representation"
+    #error "unsupported Unicode representation"
 #endif
+
+        reset( CFStringCreateWithBytes( kCFAllocatorDefault,
+            (const UInt8*)data, size, cfencoding, false /* no BOM */ ) );
 #else // not wxUSE_UNICODE
         reset( CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
             wxMacGetSystemEncFromFontEnc( encoding ) ) );
@@ -638,7 +644,7 @@ wxString wxCFStringRef::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding))
     wxString result;    
 #if wxUSE_UNICODE
   #if wxUSE_UNICODE_WCHAR
-    cfencoding = kCFStringEncodingUTF32;
+    cfencoding = kCFStringEncodingUTF32Native;
   #elif wxUSE_UNICODE_UTF8
     cfencoding = kCFStringEncodingUTF8;
   #else
@@ -664,7 +670,7 @@ wxString wxCFStringRef::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding))
     #error "unsupported unicode representation"
   #endif
 #else
-    wxString result(buf, cStrLen) ;
+    result = wxString(buf, cStrLen) ;
 #endif
     
     delete[] buf ;