+// wxNSTextViewControl
+
+wxNSTextViewControl::wxNSTextViewControl( wxTextCtrl *wxPeer, WXWidget w ) : wxWidgetCocoaImpl(wxPeer, w)
+{
+ wxNSTextScrollView* sv = (wxNSTextScrollView*) w;
+ m_scrollView = sv;
+
+ [m_scrollView setHasVerticalScroller:YES];
+ [m_scrollView setHasHorizontalScroller:NO];
+ [m_scrollView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
+ NSSize contentSize = [m_scrollView contentSize];
+
+ wxNSTextView* tv = [[wxNSTextView alloc] initWithFrame: NSMakeRect(0, 0,
+ contentSize.width, contentSize.height)];
+ m_textView = tv;
+ [tv setVerticallyResizable:YES];
+ [tv setHorizontallyResizable:NO];
+ [tv setAutoresizingMask:NSViewWidthSizable];
+
+ [m_scrollView setDocumentView: tv];
+
+ [tv setDelegate: w];
+ [tv setScrollView:sv];
+}
+
+wxNSTextViewControl::~wxNSTextViewControl()
+{
+ if (m_textView)
+ [m_textView setDelegate: nil];
+}
+
+wxString wxNSTextViewControl::GetStringValue() const
+{
+ if (m_textView)
+ {
+ wxCFStringRef cf( (CFStringRef) [[m_textView string] retain] );
+ return cf.AsString(m_wxPeer->GetFont().GetEncoding());
+ }
+ return wxEmptyString;
+}
+void wxNSTextViewControl::SetStringValue( const wxString &str)
+{
+ if (m_textView)
+ [m_textView setString: wxCFStringRef( str , m_wxPeer->GetFont().GetEncoding() ).AsNSString()];
+}
+void wxNSTextViewControl::Copy()
+{
+ if (m_textView)
+ [m_textView copy:nil];
+
+}
+
+void wxNSTextViewControl::Cut()
+{
+ if (m_textView)
+ [m_textView cut:nil];
+}
+
+void wxNSTextViewControl::Paste()
+{
+ if (m_textView)
+ [m_textView paste:nil];
+}
+
+bool wxNSTextViewControl::CanPaste() const
+{
+ return true;
+}
+
+void wxNSTextViewControl::SetEditable(bool editable)
+{
+ if (m_textView)
+ [m_textView setEditable: editable];
+}
+
+void wxNSTextViewControl::GetSelection( long* from, long* to) const
+{
+ if (m_textView)
+ {
+ NSRange range = [m_textView selectedRange];
+ *from = range.location;
+ *to = range.location + range.length;
+ }
+}
+
+void wxNSTextViewControl::SetSelection( long from , long to )
+{
+ NSRange selrange = NSMakeRange(from, to-from);
+ [m_textView setSelectedRange:selrange];
+ [m_textView scrollRangeToVisible:selrange];
+}
+
+void wxNSTextViewControl::WriteText(const wxString& str)
+{
+ // temp hack to get logging working early
+ wxString former = GetStringValue();
+ SetStringValue( former + str );
+ SetSelection(GetStringValue().length(), GetStringValue().length());
+}
+
+// wxNSTextFieldControl
+