+#endif
+}
+
+void wxTextCtrl::MacEnabledStateChanged()
+{
+}
+
+
+wxString wxTextCtrl::GetValue() const
+{
+ wxString result ;
+#if wxMAC_USE_MLTE
+ OSStatus err ;
+ Size actualSize = 0;
+ {
+#if wxUSE_UNICODE
+ Handle theText ;
+ err = TXNGetDataEncoded( ((TXNObject) m_macTXN), kTXNStartOffset, kTXNEndOffset, &theText , kTXNUnicodeTextData );
+ // all done
+ if ( err )
+ {
+ actualSize = 0 ;
+ }
+ else
+ {
+ actualSize = GetHandleSize( theText ) / sizeof( UniChar) ;
+ if ( actualSize > 0 )
+ {
+ wxChar *ptr = NULL ;
+#if SIZEOF_WCHAR_T == 2
+ ptr = new wxChar[actualSize + 1 ] ;
+ wxStrncpy( ptr , (wxChar*) *theText , actualSize ) ;
+
+#else
+ SetHandleSize( theText , ( actualSize + 1 ) * sizeof( UniChar ) ) ;
+ HLock( theText ) ;
+ (((UniChar*)*theText)[actualSize]) = 0 ;
+ wxMBConvUTF16BE converter ;
+ size_t noChars = converter.MB2WC( NULL , (const char*)*theText , 0 ) ;
+ ptr = new wxChar[noChars + 1] ;
+
+ noChars = converter.MB2WC( ptr , (const char*)*theText , noChars ) ;
+ ptr[noChars] = 0 ;
+ HUnlock( theText ) ;
+#endif
+ ptr[actualSize] = 0 ;
+ result = wxString( ptr ) ;
+ delete[] ptr ;
+ }
+ DisposeHandle( theText ) ;
+ }
+#else
+ Handle theText ;
+ err = TXNGetDataEncoded( ((TXNObject) m_macTXN), kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData );
+ // all done
+ if ( err )
+ {
+ actualSize = 0 ;
+ }
+ else
+ {
+ actualSize = GetHandleSize( theText ) ;
+ if ( actualSize > 0 )
+ {
+ HLock( theText ) ;
+ result = wxString( *theText , wxConvLocal , actualSize ) ;
+ HUnlock( theText ) ;
+ }
+ DisposeHandle( theText ) ;
+ }
+#endif
+ }
+#else
+ CFStringRef value = NULL ;
+ Size actualSize = 0 ;
+
+ verify_noerr( GetControlData( (ControlRef) m_macControl , 0, GetWindowStyle() & wxTE_PASSWORD ?
+ kControlEditTextPasswordCFStringTag : kControlEditTextCFStringTag,
+ sizeof(CFStringRef), &value, &actualSize ) );
+ if ( value )
+ {
+ wxMacCFStringHolder cf(value) ;
+ result = cf.AsString() ;
+ }
+#endif
+ wxMacConvertNewlines10To13( &result ) ;
+ return result ;
+}
+
+void wxTextCtrl::GetSelection(long* from, long* to) const
+{
+#if wxMAC_USE_MLTE
+ TXNGetSelection( (TXNObject) m_macTXN , (TXNOffset*) from , (TXNOffset*) to ) ;
+#else
+ ControlEditTextSelectionRec sel ;
+ Size actualSize ;
+ verify_noerr( GetControlData( (ControlRef) m_macControl , 0, kControlEditTextSelectionTag,
+ sizeof(ControlEditTextSelectionRec), &sel, &actualSize ) );
+ if ( from ) *from = sel.selStart ;
+ if ( to ) *to = sel.selEnd ;
+#endif
+}
+
+void wxTextCtrl::SetValue(const wxString& str)
+{
+ // optimize redraws
+ if ( GetValue() == str )
+ return ;
+
+ wxString st = str ;
+ wxMacConvertNewlines13To10( &st ) ;
+#if wxMAC_USE_MLTE
+ {
+ wxMacWindowClipper c( this ) ;
+ bool formerEditable = m_editable ;
+ if ( !formerEditable )
+ SetEditable(true) ;
+
+#if !wxMAC_USE_MLTE_HIVIEW
+ // otherwise scrolling might have problems ?
+ TPUpdateVisibility( ( (STPTextPaneVars *)m_macTXNvars)->fUserPaneRec ) ;
+#endif
+ SetTXNData( (STPTextPaneVars *)m_macTXNvars , (TXNObject) m_macTXN , st , kTXNStartOffset, kTXNEndOffset ) ;
+ TXNSetSelection( (TXNObject) m_macTXN, 0, 0);
+ TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart);
+ if ( !formerEditable )
+ SetEditable(formerEditable) ;
+ }
+#else
+ wxMacCFStringHolder cf(st , m_font.GetEncoding() ) ;
+ CFStringRef value = cf ;
+ verify_noerr( SetControlData( (ControlRef) m_macControl , 0, GetWindowStyle() & wxTE_PASSWORD ?
+ kControlEditTextPasswordCFStringTag : kControlEditTextCFStringTag,
+ sizeof(CFStringRef), &value ) );
+#endif
+}
+
+void wxTextCtrl::SetMaxLength(unsigned long len)
+{
+ m_maxLength = len ;
+}
+
+bool wxTextCtrl::SetFont( const wxFont& font )
+{
+ if ( !wxTextCtrlBase::SetFont( font ) )
+ return FALSE ;
+
+#if wxMAC_USE_MLTE
+ wxMacWindowClipper c( this ) ;
+ bool formerEditable = m_editable ;
+ if ( !formerEditable )
+ SetEditable(true) ;
+
+ TXNTypeAttributes typeAttr[4] ;
+ Str255 fontName = "\pMonaco" ;
+ SInt16 fontSize = 12 ;
+ Style fontStyle = normal ;
+ int attrCounter = 0 ;
+
+ wxMacStringToPascal( font.GetFaceName() , fontName ) ;
+ fontSize = font.MacGetFontSize() ;
+ fontStyle = font.MacGetFontStyle() ;
+
+ typeAttr[attrCounter].tag = kTXNQDFontNameAttribute ;
+ typeAttr[attrCounter].size = kTXNQDFontNameAttributeSize ;
+ typeAttr[attrCounter].data.dataPtr = (void*) fontName ;
+ typeAttr[attrCounter+1].tag = kTXNQDFontSizeAttribute ;
+ typeAttr[attrCounter+1].size = kTXNFontSizeAttributeSize ;
+ typeAttr[attrCounter+1].data.dataValue = (fontSize << 16) ;
+ typeAttr[attrCounter+2].tag = kTXNQDFontStyleAttribute ;
+ typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ;
+ typeAttr[attrCounter+2].data.dataValue = fontStyle ;
+ attrCounter += 3 ;
+ /*
+ typeAttr[attrCounter].tag = kTXNQDFontColorAttribute ;
+ typeAttr[attrCounter].size = kTXNQDFontColorAttributeSize ;
+ typeAttr[attrCounter].data.dataPtr = (void*) &color ;
+ color = MAC_WXCOLORREF(GetForegroundColour().GetPixel()) ;
+ attrCounter += 1 ;