]> git.saurik.com Git - wxWidgets.git/commitdiff
simplifying native string handling, see #11061
authorStefan Csomor <csomor@advancedconcepts.ch>
Tue, 18 Aug 2009 15:30:24 +0000 (15:30 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Tue, 18 Aug 2009 15:30:24 +0000 (15:30 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61698 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/core/cfstring.h
src/osx/cocoa/dirdlg.mm
src/osx/cocoa/filedlg.mm
src/osx/cocoa/listbox.mm
src/osx/cocoa/textctrl.mm
src/osx/cocoa/window.mm
src/osx/core/cfstring.cpp

index 30d4319493aa17a6eda0e568ea01409ef140ffa3..e60bb91548338acb492a545476f0e95a957b68c2 100644 (file)
@@ -68,7 +68,12 @@ public:
     {
     }
 
-    wxString AsString( wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) ;
+    wxString AsString( wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) const;
+    
+    static wxString AsString( CFStringRef ref, wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) ;
+#if wxOSX_USE_COCOA_OR_IPHONE
+    static wxString AsString( NSString* ref, wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) ;
+#endif
 
 #if wxOSX_USE_COCOA_OR_IPHONE
     NSString* AsNSString() const { return (NSString*)(CFStringRef) *this; }
index e68bf5020b8812f8a40aef545720155ca5825691..9ab49d86ec3e12ddd5f96a504069c32924563b63 100644 (file)
@@ -99,9 +99,7 @@ int wxDirDialog::ShowModal()
     }
     if (returnCode == NSOKButton )
     {
-        wxCFStringRef resultpath( [[[oPanel filenames] objectAtIndex:0] retain] );
-        
-        SetPath( resultpath.AsString() );
+        SetPath( wxCFStringRef::AsString([[oPanel filenames] objectAtIndex:0]));
         result = wxID_OK;
     }
     return result;
index 0b34682a7213d23efefd8e70aaf49d59af26c53b..4a9d65fbc9d84457c59a57711d168580c67ed221 100644 (file)
@@ -201,9 +201,7 @@ int wxFileDialog::ShowModal()
             panel = sPanel;
             result = wxID_OK;
 
-            wxCFStringRef filename( [[sPanel filename] retain] );
-
-            m_path = filename.AsString();
+            m_path = wxCFStringRef::AsString([sPanel filename]);
             m_fileName = wxFileNameFromPath(m_path);
             m_dir = wxPathOnly( m_path );
         }
@@ -245,8 +243,7 @@ int wxFileDialog::ShowModal()
             NSArray* filenames = [oPanel filenames];
             for ( size_t i = 0 ; i < [filenames count] ; ++ i )
             {
-                wxCFStringRef filename( [(NSString*) [filenames objectAtIndex:i] retain] );
-                wxString fnstr = filename.AsString();
+                wxString fnstr = wxCFStringRef::AsString([filenames objectAtIndex:i]);
                 m_paths.Add( fnstr );
                 m_fileNames.Add( wxFileNameFromPath(fnstr) );
                 if ( i == 0 )
index dc6519ae2381c65cdd7be333a107d067d6c7b024..ded09fb1e69de8c5b02de0f8e46f3a54c52121de 100644 (file)
@@ -209,7 +209,7 @@ public :
     virtual wxString GetStringValue() const 
     {
         if ( [value isKindOfClass:[NSString class]] )
-            return wxCFStringRef( (CFStringRef) [value retain] ).AsString();
+            return wxCFStringRef::AsString( (NSString*) value );
             
         return wxEmptyString;
     }
index c9dbe0b1aef8f217f5c5562b22b91c5a57f1dbcc..77a6ba4d0261926a1bdd2bd7148063f860afa5d6 100644 (file)
@@ -333,8 +333,7 @@ wxString wxNSTextViewControl::GetStringValue() const
 {
     if (m_textView) 
     {
-        wxCFStringRef cf( (CFStringRef) [[m_textView string] retain] );
-        wxString result = cf.AsString(m_wxPeer->GetFont().GetEncoding());
+        wxString result = wxCFStringRef::AsString([m_textView string], m_wxPeer->GetFont().GetEncoding());
         wxMacConvertNewlines13To10( &result ) ;
         return result;
     }
@@ -446,8 +445,7 @@ wxNSTextFieldControl::~wxNSTextFieldControl()
 
 wxString wxNSTextFieldControl::GetStringValue() const 
 {
-    wxCFStringRef cf( (CFStringRef) [[m_textField stringValue] retain] );
-    return cf.AsString(m_wxPeer->GetFont().GetEncoding());
+    return wxCFStringRef::AsString([m_textField stringValue], m_wxPeer->GetFont().GetEncoding());
 }
 
 void wxNSTextFieldControl::SetStringValue( const wxString &str) 
index 69f702827f02cc077991a24d908dfce6421e5d4e..6dd32c83ae231f2bf56ac58f011c77cdeb31b23c 100644 (file)
@@ -294,13 +294,11 @@ void SetupKeyEvent( wxKeyEvent &wxevent , NSEvent * nsEvent, NSString* charStrin
         {
             // if charString is set, it did not come from key up / key down
             wxevent.SetEventType( wxEVT_CHAR );
-            wxCFStringRef cfchars((CFStringRef)[charString retain]);
-            chars = cfchars.AsString();
+            chars = wxCFStringRef::AsString(charString);
         }
         else if ( nschars )
         {
-            wxCFStringRef cfchars((CFStringRef)[nschars retain]);
-            chars = cfchars.AsString();
+            chars = wxCFStringRef::AsString(nschars);
         }
     }
     
index 3d10e29b7e071780fdf2a477314e81af5f6a24d9..b603e5b48d5ae63b0672834b60233f80fab846c2 100644 (file)
@@ -632,12 +632,12 @@ wxCFStringRef::wxCFStringRef( const wxString &st , wxFontEncoding WXUNUSED_IN_UN
     }
 }
 
-wxString wxCFStringRef::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding))
+wxString wxCFStringRef::AsString( CFStringRef ref, wxFontEncoding WXUNUSED_IN_UNICODE(encoding) )
 {
-    if ( !get() )
+    if ( !ref )
         return wxEmptyString ;
 
-    Size cflen = CFStringGetLength( get() )  ;
+    Size cflen = CFStringGetLength( ref )  ;
     char* buf = NULL ;
 
     CFStringEncoding cfencoding = 0;
@@ -655,10 +655,10 @@ wxString wxCFStringRef::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding))
 #endif
 
     CFIndex cStrLen ;
-    CFStringGetBytes( get() , CFRangeMake(0, cflen) , cfencoding ,
+    CFStringGetBytes( ref , CFRangeMake(0, cflen) , cfencoding ,
         '?' , false , NULL , 0 , &cStrLen ) ;
     buf = new char[ cStrLen ] ;
-    CFStringGetBytes( get() , CFRangeMake(0, cflen) , cfencoding,
+    CFStringGetBytes( ref , CFRangeMake(0, cflen) , cfencoding,
         '?' , false , (unsigned char*) buf , cStrLen , &cStrLen) ;
     
 #if wxUSE_UNICODE
@@ -678,6 +678,19 @@ wxString wxCFStringRef::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding))
     return result ;
 }
 
+wxString wxCFStringRef::AsString(wxFontEncoding encoding) const
+{
+    return AsString( get(), encoding );
+}
+
+#if wxOSX_USE_COCOA_OR_IPHONE
+wxString wxCFStringRef::AsString( NSString* ref, wxFontEncoding encoding ) 
+{
+    return AsString( (CFStringRef) ref, encoding );
+}
+#endif
+
+
 //
 // wxMacUniCharBuffer
 //