]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textctrl.cpp
Copied gsockmsw.c revision 1.20
[wxWidgets.git] / src / msw / textctrl.cpp
index 3b0c9572ea3628c19f2f77459f1c8c02555f7708..7dd6a84fcfc42c2de707c7a87a0f025cf8046b56 100644 (file)
@@ -637,6 +637,9 @@ void wxTextCtrl::SetValue(const wxString& value)
     if ( (value.length() > 0x400) || (value != GetValue()) )
     {
         DoWriteText(value, FALSE /* not selection only */);
+        
+        // for compatibility, don't move the cursor when doing SetValue()
+        SetInsertionPoint(0);
     }
     else // same text
     {
@@ -649,9 +652,6 @@ void wxTextCtrl::SetValue(const wxString& value)
     // mark the control as being not dirty - we changed its text, not the
     // user
     DiscardEdits();
-
-    // for compatibility, don't move the cursor when doing SetValue()
-    SetInsertionPoint(0);
 }
 
 #if wxUSE_RICHEDIT && (!wxUSE_UNICODE || wxUSE_UNICODE_MSLU)
@@ -822,13 +822,13 @@ wxTextCtrl::StreamOut(wxFontEncoding encoding, bool selectionOnly) const
         // decreased by wxRichEditStreamOut
         *(wchBuf.data() + data.len) = L'\0';
 
-        // now convert to the given encoding (this is a lossful conversion but
-        // what else can we do)
+        // now convert to the given encoding (this is a possibly lossful
+        // conversion but what else can we do)
         wxCSConv conv(encoding);
-        size_t lenNeeded = conv.WC2MB(NULL, wchBuf, len);
-        if ( lenNeeded )
+        size_t lenNeeded = conv.WC2MB(NULL, wchBuf, 0);
+        if ( lenNeeded++ )
         {
-            conv.WC2MB(wxStringBuffer(out, lenNeeded), wchBuf, len);
+            conv.WC2MB(wxStringBuffer(out, lenNeeded), wchBuf, lenNeeded);
         }
     }