X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/655719367ac5e131d9642e5783f3ecf64d1a3385..2713fedc4644942bab59472b90612ffbe37c2760:/src/os2/combobox.cpp diff --git a/src/os2/combobox.cpp b/src/os2/combobox.cpp index 3bc56e0c4d..cc804d4354 100644 --- a/src/os2/combobox.cpp +++ b/src/os2/combobox.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: combobox.cpp +// Name: src/os2/combobox.cpp // Purpose: wxComboBox class // Author: David Webster // Modified by: @@ -9,19 +9,17 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#include "wx/combobox.h" - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#if wxUSE_COMBOBOX + +#include "wx/combobox.h" + #ifndef WX_PRECOMP - #include "wx/setup.h" #include "wx/settings.h" #endif -#if wxUSE_COMBOBOX - -#include "wx/combobox.h" #include "wx/clipbrd.h" #include "wx/os2/private.h" @@ -39,41 +37,35 @@ static WXFARPROC gfnWndprocEdit = (WXFARPROC)NULL; IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl) -bool wxComboBox::OS2Command( - WXUINT uParam -, WXWORD WXUNUSED(wId) -) +bool wxComboBox::OS2Command( WXUINT uParam, WXWORD WXUNUSED(wId) ) { - long lSel = -1L; - wxString sValue; + long lSel = GetSelection(); + wxString sValue; switch (uParam) { case CBN_LBSELECT: - if (GetSelection() > -1) + if (lSel > -1) { - wxCommandEvent vEvent( wxEVT_COMMAND_COMBOBOX_SELECTED - ,GetId() - ); + wxCommandEvent vEvent( wxEVT_COMMAND_COMBOBOX_SELECTED, GetId() ); - vEvent.SetInt(GetSelection()); + vEvent.SetInt(lSel); vEvent.SetEventObject(this); - vEvent.SetString((char*)GetStringSelection().c_str()); + vEvent.SetString(GetStringSelection()); + ProcessCommand(vEvent); } break; case CBN_EFCHANGE: { - wxCommandEvent vEvent( wxEVT_COMMAND_TEXT_UPDATED - ,GetId() - ); + wxCommandEvent vEvent( wxEVT_COMMAND_TEXT_UPDATED, GetId() ); if (lSel == -1L) sValue = GetValue(); else - SetValue(sValue); - vEvent.SetString((char*)GetValue().c_str()); + sValue = GetStringSelection(); + vEvent.SetString(sValue); vEvent.SetEventObject(this); ProcessCommand(vEvent); } @@ -81,9 +73,9 @@ bool wxComboBox::OS2Command( } // // There is no return value for the CBN_ notifications, so always return - // FALSE from here to pass the message to DefWindowProc() + // false from here to pass the message to DefWindowProc() // - return FALSE; + return false; } // end of wxComboBox::OS2Command bool wxComboBox::Create( @@ -117,7 +109,7 @@ bool wxComboBox::Create( , const wxString& rsName ) { - m_isShown = FALSE; + m_isShown = false; if (!CreateControl( pParent ,vId @@ -127,7 +119,7 @@ bool wxComboBox::Create( ,rValidator ,rsName )) - return FALSE; + return false; // // Get the right style @@ -147,10 +139,10 @@ bool wxComboBox::Create( lSstyle |= CBS_DROPDOWN; - if (!OS2CreateControl( "COMBOBOX" + if (!OS2CreateControl( _T("COMBOBOX") ,lSstyle )) - return FALSE; + return false; // // A choice/combobox normally has a white background (or other, depending @@ -158,10 +150,7 @@ bool wxComboBox::Create( // SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); - SetFont(*wxSMALL_FONT); - - int i; - for (i = 0; i < n; i++) + for (int i = 0; i < n; i++) { Append(asChoices[i]); } @@ -171,7 +160,15 @@ bool wxComboBox::Create( ,rSize.x ,rSize.y ); - if (!rsValue.IsEmpty()) + + // Set height to use with sizers i.e. without the dropdown listbox + wxFont vFont = GetFont(); + int nCx,nCy; + wxGetCharSize( GetHWND(), &nCx, &nCy, &vFont ); + int nEditHeight = EDIT_HEIGHT_FROM_CHAR_HEIGHT(nCy); + SetBestFittingSize(wxSize(-1,nEditHeight)); + + if (!rsValue.empty()) { SetValue(rsValue); } @@ -179,10 +176,15 @@ bool wxComboBox::Create( ,(PFNWP)wxComboEditWndProc ); ::WinSetWindowULong(GetHwnd(), QWL_USER, (ULONG)this); - Show(TRUE); - return TRUE; + Show(true); + return true; } // end of wxComboBox::Create +wxString wxComboBox::GetValue() const +{ + return wxGetWindowText(GetHwnd()); +} + void wxComboBox::SetValue( const wxString& rsValue ) @@ -190,7 +192,7 @@ void wxComboBox::SetValue( if ( HasFlag(wxCB_READONLY) ) SetStringSelection(rsValue); else - ::WinSetWindowText(GetHwnd(), rsValue.c_str()); + ::WinSetWindowText(GetHwnd(), (PSZ)rsValue.c_str()); } // end of wxComboBox::SetValue // @@ -237,7 +239,7 @@ void wxComboBox::SetInsertionPoint( void wxComboBox::SetInsertionPointEnd() { - long lPos = GetLastPosition(); + wxTextPos lPos = GetLastPosition(); SetInsertionPoint(lPos); } // end of wxComboBox::SetInsertionPointEnd @@ -254,7 +256,7 @@ long wxComboBox::GetInsertionPoint() const return lPos; } // end of wxComboBox::GetInsertionPoint -long wxComboBox::GetLastPosition() const +wxTextPos wxComboBox::GetLastPosition() const { long lLineLength = 0L; WNDPARAMS vParams; @@ -279,11 +281,9 @@ long wxComboBox::GetLastPosition() const return lLineLength; } // end of wxComboBox::GetLastPosition -void wxComboBox::Replace( - long lFrom -, long lTo -, const wxString& rsValue -) +void wxComboBox::Replace( long lFrom, + long lTo, + const wxString& rsValue ) { #if wxUSE_CLIPBOARD HWND hWnd = GetHwnd(); @@ -307,30 +307,31 @@ void wxComboBox::Replace( // Paste into edit control // ::WinSendMsg(hWnd, EM_PASTE, (MPARAM)0, (MPARAM)0L); +#else + wxUnusedVar(lFrom); + wxUnusedVar(lTo); + wxUnusedVar(rsValue); #endif } // end of wxComboBox::Replace -void wxComboBox::Remove( - long lFrom -, long lTo -) +void wxComboBox::Remove( long lFrom, long lTo) { #if wxUSE_CLIPBOARD HWND hWnd = GetHwnd(); ::WinSendMsg(hWnd, EM_SETSEL, MPFROM2SHORT((USHORT)lFrom, (USHORT)lTo), 0); ::WinSendMsg(hWnd, EM_CUT, (MPARAM)0, (MPARAM)0); +#else + wxUnusedVar(lFrom); + wxUnusedVar(lTo); #endif } // end of wxComboBox::Remove -void wxComboBox::SetSelection( - long lFrom -, long lTo -) +void wxComboBox::SetSelection( long lFrom, long lTo ) { - HWND hWnd = GetHwnd(); - long lFromChar = 0; - long lToChar = 0; + HWND hWnd = GetHwnd(); + long lFromChar = 0; + long lToChar = 0; // // If from and to are both -1, it means @@ -350,22 +351,6 @@ void wxComboBox::SetSelection( ); } // end of wxComboBox::SetSelection -void wxComboBox::DoSetSize( - int nX -, int nY -, int nWidth -, int nHeight -, int nSizeFlags -) -{ - wxControl::DoSetSize( nX - ,nY - ,nWidth - ,nHeight - ,nSizeFlags - ); -} // end of wxComboBox::DoSetSize - bool wxComboBox::ProcessEditMsg( WXUINT uMsg , WXWPARAM wParam @@ -381,7 +366,7 @@ bool wxComboBox::ProcessEditMsg( case KC_CHAR: return (HandleChar( wParam ,lParam - ,TRUE /* isASCII */ + ,true /* isASCII */ )); case KC_PREVDOWN: @@ -401,9 +386,8 @@ bool wxComboBox::ProcessEditMsg( return(HandleSetFocus((WXHWND)(HWND)wParam)); else return(HandleKillFocus((WXHWND)(HWND)wParam)); - break; } - return FALSE; + return false; } // end of WinGuiBase_CComboBox::ProcessEditMsg MRESULT EXPENTRY wxComboEditWndProc( @@ -442,4 +426,3 @@ MRESULT EXPENTRY wxComboEditWndProc( #endif // wxUSE_COMBOBOX -