X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d44b24ee63543390aa28e1eb4ff162da4264838..61ecf6d34ffb087e4a02d1c4e29e1f155875eba0:/src/os2/combobox.cpp diff --git a/src/os2/combobox.cpp b/src/os2/combobox.cpp index bf7feb6860..867815ccdf 100644 --- a/src/os2/combobox.cpp +++ b/src/os2/combobox.cpp @@ -15,7 +15,8 @@ #include "wx/wxprec.h" #ifndef WX_PRECOMP -#include "wx/setup.h" + #include "wx/setup.h" + #include "wx/settings.h" #endif #if wxUSE_COMBOBOX @@ -48,7 +49,7 @@ bool wxComboBox::OS2Command( switch (uParam) { - case LN_SELECT: + case CBN_LBSELECT: if (GetSelection() > -1) { wxCommandEvent vEvent( wxEVT_COMMAND_COMBOBOX_SELECTED @@ -62,7 +63,7 @@ bool wxComboBox::OS2Command( } break; - case EN_CHANGE: + case CBN_EFCHANGE: { wxCommandEvent vEvent( wxEVT_COMMAND_TEXT_UPDATED ,GetId() @@ -100,8 +101,9 @@ bool wxComboBox::Create( , const wxString& rsName ) { + m_isShown = FALSE; - if (!OS2CreateControl( pParent + if (!CreateControl( pParent ,vId ,rPos ,rSize @@ -140,12 +142,11 @@ bool wxComboBox::Create( // A choice/combobox normally has a white background (or other, depending // on global settings) rather than inheriting the parent's background colour. // - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW)); + SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); - SetFont(pParent->GetFont()); + SetFont(*wxSMALL_FONT); int i; - for (i = 0; i < n; i++) { Append(asChoices[i]); @@ -164,6 +165,7 @@ bool wxComboBox::Create( ,(PFNWP)wxComboEditWndProc ); ::WinSetWindowULong(GetHwnd(), QWL_USER, (ULONG)this); + Show(TRUE); return TRUE; } // end of wxComboBox::Create @@ -171,37 +173,8 @@ void wxComboBox::SetValue( const wxString& rsValue ) { - // - // If newlines are denoted by just 10, must stick 13 in front. - // - int nSingletons = 0; - int nLen = rsValue.Length(); - int i; - - for (i = 0; i < nLen; i ++) - { - if ((i > 0) && (rsValue[i] == 10) && (rsValue[i - 1] != 13)) - nSingletons ++; - } - if (nSingletons > 0) - { - wxChar* zTmp = new wxChar[nLen + nSingletons + 1]; - int j = 0; - - for (i = 0; i < nLen; i ++) - { - if ((i > 0) && (rsValue[i] == 10) && (rsValue[i - 1] != 13)) - { - zTmp[j] = 13; - j++; - } - zTmp[j] = rsValue[i]; - j++; - } - zTmp[j] = 0; - ::WinSetWindowText(GetHwnd(), zTmp); - delete[] zTmp; - } + if ( HasFlag(wxCB_READONLY) ) + SetStringSelection(rsValue); else ::WinSetWindowText(GetHwnd(), rsValue.c_str()); } // end of wxComboBox::SetValue @@ -397,22 +370,29 @@ bool wxComboBox::ProcessEditMsg( switch(vFlag) { case KC_CHAR: - return (HandleChar( SHORT1FROMMP(wParam) + return (HandleChar( wParam ,lParam ,TRUE /* isASCII */ )); case KC_PREVDOWN: - return (HandleKeyDown( SHORT1FROMMP(wParam) + return (HandleKeyDown( wParam ,lParam )); case KC_KEYUP: - return (HandleKeyUp( SHORT1FROMMP(wParam) + return (HandleKeyUp( wParam ,lParam )); } break; + + case WM_SETFOCUS: + if (SHORT1FROMMP((MPARAM)lParam) == TRUE) + return(HandleSetFocus((WXHWND)(HWND)wParam)); + else + return(HandleKillFocus((WXHWND)(HWND)wParam)); + break; } return FALSE; } // end of WinGuiBase_CComboBox::ProcessEditMsg @@ -434,6 +414,7 @@ MRESULT EXPENTRY wxComboEditWndProc( // // Forward some messages to the combobox // + case WM_SETFOCUS: case WM_CHAR: { wxComboBox* pCombo = wxDynamicCast( pWin