X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b36e08d0867cf3f6a5a286ce145c0fb80746c290..cf283a470ab3eb4bc69959e3b5ae0edf30337fa5:/src/os2/choice.cpp diff --git a/src/os2/choice.cpp b/src/os2/choice.cpp index 50551d72a2..59e63f9275 100644 --- a/src/os2/choice.cpp +++ b/src/os2/choice.cpp @@ -70,8 +70,9 @@ bool wxChoice::Create( WS_TABSTOP | WS_VISIBLE; - if (lStyle & wxCLIP_SIBLINGS ) - lSstyle |= WS_CLIPSIBLINGS; + // clipping siblings does not yet work + // if (lStyle & wxCLIP_SIBLINGS ) + // lSstyle |= WS_CLIPSIBLINGS; wxASSERT_MSG( !(lStyle & wxCB_DROPDOWN) && !(lStyle & wxCB_READONLY) && @@ -100,6 +101,14 @@ bool wxChoice::Create( ,rSize.x ,rSize.y ); + + // Set height to use with sizers i.e. without the dropdown listbox + wxFont vFont = GetFont(); + int nEditHeight; + wxGetCharSize( GetHWND(), NULL, &nEditHeight, &vFont ); + nEditHeight = EDIT_HEIGHT_FROM_CHAR_HEIGHT(nEditHeight); + SetInitialSize(wxSize(-1,nEditHeight+4)); // +2x2 for the border + return true; } // end of wxChoice::Create @@ -118,15 +127,14 @@ int wxChoice::DoAppend( { int nIndex; LONG nIndexType = 0; - - if (m_windowStyle & wxLB_SORT) + if (m_windowStyle & wxCB_SORT) nIndexType = LIT_SORTASCENDING; else nIndexType = LIT_END; nIndex = (int)::WinSendMsg( GetHwnd() ,LM_INSERTITEM ,(MPARAM)nIndexType - ,(MPARAM)rsItem.c_str() + ,(MPARAM)rsItem.wx_str() ); return nIndex; } // end of wxChoice::DoAppend @@ -142,14 +150,14 @@ int wxChoice::DoInsert( const wxString& rsItem, unsigned int pos ) int nIndex; LONG nIndexType = 0; - if (m_windowStyle & wxLB_SORT) + if (m_windowStyle & wxCB_SORT) nIndexType = LIT_SORTASCENDING; else nIndexType = pos; nIndex = (int)::WinSendMsg( GetHwnd() ,LM_INSERTITEM ,(MPARAM)nIndexType - ,(MPARAM)rsItem.c_str() + ,(MPARAM)rsItem.wx_str() ); return nIndex; } // end of wxChoice::DoInsert @@ -177,17 +185,6 @@ void wxChoice::Clear() // ---------------------------------------------------------------------------- int wxChoice::GetSelection() const -{ - // if m_lastAcceptedSelection is set, it means that the dropdown is - // currently shown and that we want to use the last "permanent" selection - // instead of whatever is under the mouse pointer currently - // - // otherwise, get the selection from the control - return m_lastAcceptedSelection == wxID_NONE ? GetCurrentSelection() - : m_lastAcceptedSelection; -} - -int wxChoice::GetCurrentSelection() const { return((int)LONGFROMMR(::WinSendMsg(GetHwnd(), LM_QUERYSELECTION, (MPARAM)LIT_FIRST, (MPARAM)0))); } // end of wxChoice::GetSelection @@ -228,14 +225,14 @@ void wxChoice::SetString(unsigned int n, const wxString& rsStr) ::WinSendMsg(GetHwnd(), LM_DELETEITEM, (MPARAM)n, 0); - if (m_windowStyle & wxLB_SORT) + if (m_windowStyle & wxCB_SORT) nIndexType = LIT_SORTASCENDING; else nIndexType = LIT_END; ::WinSendMsg( GetHwnd() ,LM_INSERTITEM ,(MPARAM)nIndexType - ,(MPARAM)rsStr.c_str() + ,(MPARAM)rsStr.wx_str() ); if (pData) @@ -253,7 +250,7 @@ wxString wxChoice::GetString(unsigned int n) const nLen = (size_t)LONGFROMMR(::WinSendMsg(GetHwnd(), LM_QUERYITEMTEXTLENGTH, (MPARAM)n, (MPARAM)0)); if (nLen != LIT_ERROR && nLen > 0) { - zBuf = new wxChar[nLen + 1]; + zBuf = new wxChar[++nLen]; ::WinSendMsg( GetHwnd() ,LM_QUERYITEMTEXT ,MPFROM2SHORT((SHORT)n, (SHORT)nLen)