X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0934d91c7bb42c817785f9285b853d86931044b8..9ed79eee4ee3f8c83a87094eef4b7c933663001b:/src/os2/choice.cpp diff --git a/src/os2/choice.cpp b/src/os2/choice.cpp index b8940322b3..770da88ccc 100644 --- a/src/os2/choice.cpp +++ b/src/os2/choice.cpp @@ -14,8 +14,9 @@ #if wxUSE_CHOICE +#include "wx/choice.h" + #ifndef WX_PRECOMP - #include "wx/choice.h" #include "wx/utils.h" #include "wx/log.h" #include "wx/settings.h" @@ -69,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) && @@ -99,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); + SetBestFittingSize(wxSize(-1,nEditHeight+4)); // +2x2 for the border + return true; } // end of wxChoice::Create @@ -117,8 +127,7 @@ 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; @@ -141,7 +150,7 @@ 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; @@ -176,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 @@ -227,7 +225,7 @@ 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; @@ -252,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)