X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b9b1d6c8ddc0e923c368529efb0e011edeec44e6..d5e64615977c6839abe565919e8da50ffda40604:/src/os2/combobox.cpp diff --git a/src/os2/combobox.cpp b/src/os2/combobox.cpp index bea8d0e3de..c8e5138c7b 100644 --- a/src/os2/combobox.cpp +++ b/src/os2/combobox.cpp @@ -49,7 +49,7 @@ bool wxComboBox::OS2Command( switch (uParam) { - case LN_SELECT: + case CBN_LBSELECT: if (GetSelection() > -1) { wxCommandEvent vEvent( wxEVT_COMMAND_COMBOBOX_SELECTED @@ -63,7 +63,7 @@ bool wxComboBox::OS2Command( } break; - case EN_CHANGE: + case CBN_EFCHANGE: { wxCommandEvent vEvent( wxEVT_COMMAND_TEXT_UPDATED ,GetId() @@ -86,6 +86,24 @@ bool wxComboBox::OS2Command( return FALSE; } // end of wxComboBox::OS2Command +bool wxComboBox::Create( + wxWindow* pParent +, wxWindowID vId +, const wxString& rsValue +, const wxPoint& rPos +, const wxSize& rSize +, const wxArrayString& asChoices +, long lStyle +, const wxValidator& rValidator +, const wxString& rsName +) +{ + wxCArrayString chs(asChoices); + + return Create(pParent, vId, rsValue, rPos, rSize, chs.GetCount(), + chs.GetStrings(), lStyle, rValidator, rsName); +} + bool wxComboBox::Create( wxWindow* pParent , wxWindowID vId @@ -95,21 +113,18 @@ bool wxComboBox::Create( , int n , const wxString asChoices[] , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { + m_isShown = FALSE; if (!CreateControl( pParent ,vId ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName )) return FALSE; @@ -143,12 +158,7 @@ bool wxComboBox::Create( // SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); - wxFont* pTextFont = new wxFont( 10 - ,wxMODERN - ,wxNORMAL - ,wxNORMAL - ); - SetFont(*pTextFont); + SetFont(*wxSMALL_FONT); int i; for (i = 0; i < n; i++) @@ -169,7 +179,7 @@ bool wxComboBox::Create( ,(PFNWP)wxComboEditWndProc ); ::WinSetWindowULong(GetHwnd(), QWL_USER, (ULONG)this); - delete pTextFont; + Show(TRUE); return TRUE; } // end of wxComboBox::Create @@ -177,37 +187,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 @@ -275,7 +256,6 @@ long wxComboBox::GetInsertionPoint() const long wxComboBox::GetLastPosition() const { - HWND hEditWnd = GetHwnd(); long lLineLength = 0L; WNDPARAMS vParams; @@ -307,8 +287,6 @@ void wxComboBox::Replace( { #if wxUSE_CLIPBOARD HWND hWnd = GetHwnd(); - long lFromChar = lFrom; - long lToChar = lTo; // // Set selection and remove it @@ -339,8 +317,6 @@ void wxComboBox::Remove( { #if wxUSE_CLIPBOARD HWND hWnd = GetHwnd(); - long lFromChar = lFrom; - long lToChar = lTo; ::WinSendMsg(hWnd, EM_SETSEL, MPFROM2SHORT((USHORT)lFrom, (USHORT)lTo), 0); ::WinSendMsg(hWnd, EM_CUT, (MPARAM)0, (MPARAM)0); @@ -353,8 +329,8 @@ void wxComboBox::SetSelection( ) { HWND hWnd = GetHwnd(); - long lFromChar = lFrom; - long lToChar = lTo; + long lFromChar = 0; + long lToChar = 0; // // If from and to are both -1, it means @@ -403,22 +379,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 @@ -440,6 +423,7 @@ MRESULT EXPENTRY wxComboEditWndProc( // // Forward some messages to the combobox // + case WM_SETFOCUS: case WM_CHAR: { wxComboBox* pCombo = wxDynamicCast( pWin