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
{
// 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)
// 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);
}
}