]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textctrl.cpp
removed unneeded include from the header
[wxWidgets.git] / src / msw / textctrl.cpp
index 4fdcde3e8332d4c46197c3a7e693c8ba193b4e82..a6686ae562e574d275571f45f44c8bf20b864db2 100644 (file)
@@ -297,7 +297,18 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
         m_isRich = FALSE;
 #endif // wxUSE_RICHEDIT
 
-    if ( !MSWCreateControl(windowClass, msStyle, pos, size, value) )
+    // we need to turn '\n's into "\r\n"s for the multiline controls
+    wxString valueWin;
+    if ( m_windowStyle & wxTE_MULTILINE )
+    {
+        valueWin = wxTextFile::Translate(value, wxTextFileType_Dos);
+    }
+    else // single line
+    {
+        valueWin = value;
+    }
+
+    if ( !MSWCreateControl(windowClass, msStyle, pos, size, valueWin) )
         return FALSE;
 
     SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW));
@@ -637,6 +648,34 @@ void wxTextCtrl::GetSelection(long* from, long* to) const
     }
 }
 
+wxString wxTextCtrl::GetStringSelection() const
+{
+    // the base class version works correctly for the rich text controls
+    // because there the lines are terminated with just '\r' which means that
+    // the string length is not changed in the result of the translations doen
+    // in GetValue() but for the normal ones when we replace "\r\n" with '\n'
+    // we break the indices
+#if wxUSE_RICHEDIT
+    if ( m_isRich )
+        return wxTextCtrlBase::GetStringSelection();
+#endif // wxUSE_RICHEDIT
+
+    long from, to;
+    GetSelection(&from, &to);
+
+    wxString str;
+    if ( from < to )
+    {
+        str = wxGetWindowText(GetHWND()).Mid(from, to - from);
+
+        // and now that we have the correct selection, convert it to the
+        // correct format
+        str = wxTextFile::Translate(str, wxTextFileType_Unix);
+    }
+
+    return str;
+}
+
 bool wxTextCtrl::IsEditable() const
 {
     long style = ::GetWindowLong(GetHwnd(), GWL_STYLE);