X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d0b6344dda3b46c359330f92ac49c256891b3f11..9ed79eee4ee3f8c83a87094eef4b7c933663001b:/src/msw/combobox.cpp diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp index 25a2c9cd67..c85fcede27 100644 --- a/src/msw/combobox.cpp +++ b/src/msw/combobox.cpp @@ -29,6 +29,7 @@ #include "wx/combobox.h" #ifndef WX_PRECOMP + #include "wx/msw/wrapcctl.h" // include "properly" #include "wx/settings.h" #include "wx/log.h" // for wxEVT_COMMAND_TEXT_ENTER @@ -40,9 +41,6 @@ #include "wx/clipbrd.h" #include "wx/msw/private.h" -// include "properly" -#include "wx/msw/wrapcctl.h" - #if wxUSE_TOOLTIPS #include "wx/tooltip.h" #endif // wxUSE_TOOLTIPS @@ -265,6 +263,9 @@ bool wxComboBox::MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam) // when Enter is pressed if ( wParam == VK_RETURN ) { + if (SendMessage(GetHwnd(), CB_GETDROPPEDSTATE, 0, 0)) + return false; + wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); const int sel = GetSelection(); @@ -417,8 +418,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, // edit control, we must subclass it as well if ( !(style & wxCB_READONLY) ) { - gs_wndprocEdit = wxSetWindowProc((HWND)GetEditHWND(), - wxComboEditWndProc); + gs_wndprocEdit = wxSetWindowProc((HWND)GetEditHWND(), wxComboEditWndProc); } // and finally, show the control @@ -595,11 +595,13 @@ bool wxComboBox::IsEditable() const return !HasFlag(wxCB_READONLY); } -void wxComboBox::SetEditable(bool WXUNUSED(editable)) +void wxComboBox::SetEditable(bool editable) { - // Can't implement in MSW? -// HWND hWnd = GetHwnd(); -// SendMessage(hWnd, EM_SETREADONLY, (WPARAM)!editable, (LPARAM)0L); + HWND hWnd = (HWND)GetEditHWND(); + if ( !::SendMessage(hWnd, EM_SETREADONLY, !editable, 0) ) + { + wxLogLastError(_T("SendMessage(EM_SETREADONLY)")); + } } void wxComboBox::SetInsertionPoint(long pos) @@ -607,7 +609,6 @@ void wxComboBox::SetInsertionPoint(long pos) if ( GetWindowStyle() & wxCB_READONLY ) return; -#ifdef __WIN32__ HWND hWnd = GetHwnd(); ::SendMessage(hWnd, CB_SETEDITSEL, 0, MAKELPARAM(pos, pos)); HWND hEditWnd = (HWND) GetEditHWND(); @@ -618,7 +619,6 @@ void wxComboBox::SetInsertionPoint(long pos) // Why is this necessary? (Copied from wxTextCtrl::SetInsertionPoint) SendMessage(hEditWnd, EM_REPLACESEL, 0, (LPARAM) wxEmptyString); } -#endif // __WIN32__ } void wxComboBox::SetInsertionPointEnd()