X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4fa80851004670b11f3bb60df2f08fab1512c461..2919a8b5af9bb78a390a0473703a3f6b37c2da6c:/src/msw/textctrl.cpp diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index 3cb69ee267..3beeae7206 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -13,10 +13,6 @@ // declarations // ============================================================================ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "textctrl.h" -#endif - // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- @@ -358,9 +354,12 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, // only give the error msg once if the DLL can't be loaded static bool s_errorGiven = false; // MT ok as only used by GUI - wxLogError(_("Impossible to create a rich edit control, using simple text control instead. Please reinstall riched32.dll")); + if ( !s_errorGiven ) + { + wxLogError(_("Impossible to create a rich edit control, using simple text control instead. Please reinstall riched32.dll")); - s_errorGiven = true; + s_errorGiven = true; + } m_verRichEdit = 0; } @@ -810,7 +809,10 @@ wxTextCtrl::StreamIn(const wxString& value, (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 ) { @@ -962,7 +964,8 @@ void wxTextCtrl::DoWriteText(const wxString& value, bool selectionOnly) UpdatesCountFilter ucf(m_updatesCount); ::SendMessage(GetHwnd(), selectionOnly ? EM_REPLACESEL : WM_SETTEXT, - 0, (LPARAM)valueDos.c_str()); + // EM_REPLACESEL takes 1 to indicate the operation should be redoable + selectionOnly ? 1 : 0, (LPARAM)valueDos.c_str()); if ( !ucf.GotUpdate() ) { @@ -1773,6 +1776,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) // Insert tab since calling the default Windows handler // doesn't seem to do it WriteText(wxT("\t")); + return; } break; }