X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e2cf30aa1c330e5f2f7954c3938a58a1a95f221e..34b4899df5053a53482f18d8c97a2b1913019d30:/src/msw/textctrl.cpp diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index 780b1f89e7..0f4ac931a7 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -82,7 +82,7 @@ // dummy value used for m_dropTarget, different from any valid pointer value // (which are all even under Windows) and NULL static wxDropTarget * - wxRICHTEXT_DEFAULT_DROPTARGET = wx_reinterpret_cast(wxDropTarget *, 1); + wxRICHTEXT_DEFAULT_DROPTARGET = reinterpret_cast(1); #endif // wxUSE_DRAG_AND_DROP && wxUSE_RICHEDIT @@ -484,9 +484,19 @@ bool wxTextCtrl::MSWCreateText(const wxString& value, valueWin = value; } + // suppress events sent during control creation: we're called either from + // the ctor and then we shouldn't generate any events for compatibility + // with the other ports, or from SetWindowStyleFlag() and then we shouldn't + // generate the events because our text doesn't really change, the fact + // that we (sometimes) need to recreate the control is just an + // implementation detail + m_updatesCount = -2; + if ( !MSWCreateControl(windowClass.wx_str(), msStyle, pos, size, valueWin) ) return false; + m_updatesCount = -1; + #if wxUSE_RICHEDIT if (IsRich()) { @@ -980,15 +990,10 @@ wxTextCtrl::StreamIn(const wxString& value, if (len == wxCONV_FAILED) return false; -#if wxUSE_WCHAR_T - wxWCharBuffer wchBuf(len); + wxWCharBuffer wchBuf(len); // allocates one extra character wchar_t *wpc = wchBuf.data(); -#else - wchar_t *wchBuf = (wchar_t *)malloc((len + 1)*sizeof(wchar_t)); - wchar_t *wpc = wchBuf; -#endif - conv.MB2WC(wpc, value.mb_str(), value.length()); + conv.MB2WC(wpc, value.mb_str(), len + 1); #endif // wxUSE_UNICODE_MSLU // finally, stream it in the control @@ -1912,7 +1917,7 @@ WXLRESULT wxTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara else // !editable { // NB: use "=", not "|=" as the base class version returns - // the same flags is this state as usual (i.e. + // the same flags in the disabled state as usual (i.e. // including DLGC_WANTMESSAGE). This is strange (how // does it work in the native Win32 apps?) but for now // live with it.