(selectionOnly ? SFF_SELECTION : 0),
(LPARAM)&eds);
- wxASSERT_MSG( ucf.GotUpdate(), _T("EM_STREAMIN didn't send EN_UPDATE?") );
+ // It's okay for EN_UPDATE to not be sent if the selection is empty and
+ // the text is empty, otherwise warn the programmer about it.
+ wxASSERT_MSG( ucf.GotUpdate() || ( !HasSelection() && value.empty() ),
+ _T("EM_STREAMIN didn't send EN_UPDATE?") );
if ( eds.dwError )
{
void wxTextCtrl::DoWriteText(const wxString& value, bool selectionOnly)
{
- if ( value.empty() )
- return;
-
wxString valueDos;
if ( m_windowStyle & wxTE_MULTILINE )
valueDos = wxTextFile::Translate(value, wxTextFileType_Dos);
// ES_DISABLENOSCROLL
//
// this is very ugly but I don't see any other way to make this work
+ long style = 0;
if ( GetRichVersion() > 1 )
{
if ( !HasFlag(wxTE_NOHIDESEL) )
{
+ // setting ECO_NOHIDESEL also sets WS_VISIBLE and possibly
+ // others, remember the style so we can reset it later if needed
+ style = ::GetWindowLong(GetHwnd(), GWL_STYLE);
::SendMessage(GetHwnd(), EM_SETOPTIONS,
ECOOP_OR, ECO_NOHIDESEL);
}
{
::SendMessage(GetHwnd(), EM_SETOPTIONS,
ECOOP_AND, ~ECO_NOHIDESEL);
+ if ( style != ::GetWindowLong(GetHwnd(), GWL_STYLE) )
+ ::SetWindowLong(GetHwnd(), GWL_STYLE, style);
}
#endif // wxUSE_RICHEDIT
}
int hText = cy;
if ( m_windowStyle & wxTE_MULTILINE )
{
- hText *= wxMax(wxMin(GetNumberOfLines(), 10), 2);
+ hText *= wxMax(wxMin(GetNumberOfLines(), 10), 2);
}
//else: for single line control everything is ok
if ( changeSel )
{
- DoSetSelection(position, position, false /* don't scroll caret into view */);
+ DoSetSelection(position, position+1, false /* don't scroll caret into view */);
}
// get the selection formatting