virtual bool CanPaste() const ;
     virtual void SetEditable(bool editable) ;
     virtual wxTextPos GetLastPosition() const ;
-    virtual void Replace( long from , long to , const wxString str ) ;
-    virtual void Remove( long from , long to ) = 0 ;
+    virtual void Replace( long from , long to , const wxString &str ) ;
+    virtual void Remove( long from , long to ) ;
     virtual void SetSelection( long from , long to ) = 0 ;
     virtual void GetSelection( long* from, long* to) const = 0 ;
     virtual void WriteText(const wxString& str) = 0 ;
     virtual bool CanPaste() const ;
     virtual void SetEditable(bool editable) ;
     virtual wxTextPos GetLastPosition() const ;
-    virtual void Replace( long from , long to , const wxString str ) ;
+    virtual void Replace( long from , long to , const wxString &str ) ;
     virtual void Remove( long from , long to )  ;
     virtual void GetSelection( long* from, long* to) const ;
     virtual void SetSelection( long from , long to ) ;
                              const wxSize& size, long style ) ;
     virtual OSStatus SetFocus( ControlFocusPart focusPart ) ;
     virtual bool HasFocus() const ;
+    virtual void SetBackground( const wxBrush &brush) ;
 protected :
     HIViewRef m_scrollView ;
     HIViewRef m_textView ;
     virtual void Paste();
     virtual bool CanPaste() const;
     virtual void SetEditable(bool editable) ;
-    virtual void Remove( long from , long to ) ;
     virtual void GetSelection( long* from, long* to) const ;
     virtual void SetSelection( long from , long to ) ;
     virtual void WriteText(const wxString& str) ;
     return GetStringValue().Length() ;
 }
 
-void wxMacTextControl::Replace( long from , long to , const wxString str )
+void wxMacTextControl::Replace( long from , long to , const wxString &val )
+{
+    SetSelection( from , to ) ;
+    WriteText( val) ;
+}
+
+void wxMacTextControl::Remove( long from , long to )
 {
+    SetSelection( from , to ) ;
+    WriteText( wxEmptyString) ;
 }
 
 void wxMacTextControl::Clear()
 {
     SetData<Boolean>( 0 , kControlEditTextLockedTag , (Boolean) !editable ) ;
 }
-void wxMacUnicodeTextControl::Remove( long from , long to )
-{
-}
 
 void wxMacUnicodeTextControl::GetSelection( long* from, long* to) const
 {
     return actualsize ;
 }
 
-void wxMacMLTEControl::Replace( long from , long to , const wxString str )
+void wxMacMLTEControl::Replace( long from , long to , const wxString &str )
 {
     wxString value = str ;
     wxMacConvertNewlines10To13( &value ) ;
     return control == m_textView ;
 }
 
+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4
+#define kCGColorSpaceGenericRGB   CFSTR("kCGColorSpaceGenericRGB")
+#endif
+
+void wxMacMLTEHIViewControl::SetBackground( const wxBrush &brush )
+{
+    wxMacMLTEControl::SetBackground( brush ) ;
+/*
+    CGColorSpaceRef rgbSpace = CGColorSpaceCreateDeviceRGB();
+    RGBColor col = MAC_WXCOLORREF(brush.GetColour().GetPixel()) ;
+
+    float component[4] ;
+    component[0] = col.red / 65536.0 ;
+    component[1] = col.green / 65536.0 ;
+    component[2] = col.blue / 65536.0 ;
+    component[3] = 1.0 ; // alpha
+    
+    CGColorRef color = CGColorCreate (rgbSpace , component );
+    HITextViewSetBackgroundColor( m_textView , color ) ;
+    CGColorSpaceRelease( rgbSpace );
+*/
+}
+
 #endif // MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2