X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0ad2a19e42e400028bb28b0cfac7e0ac9636a82b..69659fd770f615210efac4b4fa741b3ad6223616:/src/msw/choice.cpp diff --git a/src/msw/choice.cpp b/src/msw/choice.cpp index 0fbae50603..4af53089a6 100644 --- a/src/msw/choice.cpp +++ b/src/msw/choice.cpp @@ -220,7 +220,8 @@ wxChoice::~wxChoice() int wxChoice::DoAppend(const wxString& item) { - int n = (int)SendMessage(GetHwnd(), CB_ADDSTRING, 0, (LPARAM)item.c_str()); + int n = (int)SendMessage(GetHwnd(), CB_ADDSTRING, 0, + (LPARAM)item.wx_str()); if ( n == CB_ERR ) { wxLogLastError(wxT("SendMessage(CB_ADDSTRING)")); @@ -242,7 +243,8 @@ int wxChoice::DoInsert(const wxString& item, unsigned int pos) wxCHECK_MSG(!(GetWindowStyle() & wxCB_SORT), -1, wxT("can't insert into sorted list")); wxCHECK_MSG(IsValidInsert(pos), -1, wxT("invalid index")); - int n = (int)SendMessage(GetHwnd(), CB_INSERTSTRING, pos, (LPARAM)item.c_str()); + int n = (int)SendMessage(GetHwnd(), CB_INSERTSTRING, pos, + (LPARAM)item.wx_str()); if ( n == CB_ERR ) { wxLogLastError(wxT("SendMessage(CB_INSERTSTRING)")); @@ -368,7 +370,7 @@ int wxChoice::FindString(const wxString& s, bool bCase) const else { int pos = (int)SendMessage(GetHwnd(), CB_FINDSTRINGEXACT, - (WPARAM)-1, (LPARAM)s.c_str()); + (WPARAM)-1, (LPARAM)s.wx_str()); return pos == LB_ERR ? wxNOT_FOUND : pos; } @@ -394,7 +396,7 @@ void wxChoice::SetString(unsigned int n, const wxString& s) } ::SendMessage(GetHwnd(), CB_DELETESTRING, n, 0); - ::SendMessage(GetHwnd(), CB_INSERTSTRING, n, (LPARAM)s.c_str() ); + ::SendMessage(GetHwnd(), CB_INSERTSTRING, n, (LPARAM)s.wx_str() ); if ( data ) { @@ -506,7 +508,7 @@ void wxChoice::DoSetSize(int x, int y, int sizeFlags) { int heightOrig = height; - + // the height which we must pass to Windows should be the total height of // the control including the drop down list while the height given to us // is, of course, just the height of the permanently visible part of it @@ -720,6 +722,13 @@ bool wxChoice::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) // need to reset the selection back to it if it's eventually // cancelled by user m_lastAcceptedSelection = GetCurrentSelection(); + if ( m_lastAcceptedSelection == -1 ) + { + // no current selection so no need to restore it later (this + // happens when opening a combobox containing text not from its + // list of items and we shouldn't erase this text) + m_lastAcceptedSelection = wxID_NONE; + } break; case CBN_CLOSEUP: