X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5f6475c145b713efc0c3d8b482338438e927b763..f5766910b6731eb03e82371416e9778203396ce7:/src/msw/combobox.cpp?ds=inline diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp index 8d049cb564..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 <commctrl.h> "properly" #include "wx/settings.h" #include "wx/log.h" // for wxEVT_COMMAND_TEXT_ENTER @@ -40,10 +41,6 @@ #include "wx/clipbrd.h" #include "wx/msw/private.h" -// include <commctrl.h> "properly" -#include "wx/msw/wrapcctl.h" -#include "wx/msw/wrapshl.h" - #if wxUSE_TOOLTIPS #include "wx/tooltip.h" #endif // wxUSE_TOOLTIPS @@ -266,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(); @@ -418,14 +418,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, // edit control, we must subclass it as well if ( !(style & wxCB_READONLY) ) { - const HWND hwndEdit = (HWND)GetEditHWND(); - - gs_wndprocEdit = wxSetWindowProc(hwndEdit, wxComboEditWndProc); - - if ( style & wxCB_FILENAME ) - { - wxEnableFileNameAutoComplete(hwndEdit); - } + gs_wndprocEdit = wxSetWindowProc((HWND)GetEditHWND(), wxComboEditWndProc); } // and finally, show the control @@ -602,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) @@ -614,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(); @@ -625,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()