X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/582381212ea2b8e70e47b85a5d74c352e360fda3..787d22ec24ac07aa61154eb1eea9c4183e6efcc5:/src/os2/choice.cpp diff --git a/src/os2/choice.cpp b/src/os2/choice.cpp index 0393f574e0..5ae8def9d9 100644 --- a/src/os2/choice.cpp +++ b/src/os2/choice.cpp @@ -31,24 +31,20 @@ bool wxChoice::Create( , int n , const wxString asChoices[] , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { long lSstyle; - if (!OS2CreateControl( pParent - ,vId - ,rPos - ,rSize - ,lStyle -#if wxUSE_VALIDATORS - ,rValidator -#endif - ,rsName - )) + if (!CreateControl( pParent + ,vId + ,rPos + ,rSize + ,lStyle + ,rValidator + ,rsName + )) return FALSE; lSstyle = CBS_DROPDOWNLIST | WS_TABSTOP | @@ -189,19 +185,35 @@ void wxChoice::SetString( ) { SHORT nIndexType = 0; + void* pData; - ::WinSendMsg(WinUtil_GetHwnd(), LM_DELETEITEM, (MPARAM)n, 0); + if ( m_clientDataItemsType != wxClientData_None ) + { + pData = DoGetItemClientData(n); + } + else // no client data + { + pData = NULL; + } + ::WinSendMsg(GetHwnd(), LM_DELETEITEM, (MPARAM)n, 0); - if (m_lWindowStyle & winLB_SORT) + if (m_windowStyle & wxLB_SORT) nIndexType = LIT_SORTASCENDING; else nIndexType = LIT_END; - lIndex = (YInt32)::WinSendMsg( WinUtil_GetHwnd() - ,LM_INSERTITEM - ,(MPARAM)nIndexType - ,(MPARAM)rsStr.Data() - ); + ::WinSendMsg( GetHwnd() + ,LM_INSERTITEM + ,(MPARAM)nIndexType + ,(MPARAM)rsStr.c_str() + ); + + if (pData) + { + DoSetItemClientData( n + ,pData + ); + } } // end of wxChoice::SetString wxString wxChoice::GetString( @@ -213,7 +225,7 @@ wxString wxChoice::GetString( char* zBuf; nLen = (size_t)LONGFROMMR(::WinSendMsg(GetHwnd(), LM_QUERYITEMTEXTLENGTH, (MPARAM)n, (MPARAM)0)); - if (nLen) + if (nLen != LIT_ERROR && nLen > 0) { zBuf = new char[nLen + 1]; ::WinSendMsg( GetHwnd()