X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5a25f8581a6e11d4a7d61d40434a826a1a228d53..89424d9b35a32b6c450380d22dbb34268947644c:/src/msw/combobox.cpp diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp index 9d8e4a542d..5faed26cb5 100644 --- a/src/msw/combobox.cpp +++ b/src/msw/combobox.cpp @@ -312,6 +312,18 @@ bool wxComboBox::MSWCommand(WXUINT param, WXWORD id) switch ( param ) { + case CBN_DROPDOWN: + // remember the last selection, just as wxChoice does + m_lastAcceptedSelection = GetCurrentSelection(); + if ( m_lastAcceptedSelection == -1 ) + { + // but unlike with wxChoice we may have no selection but still + // have some text and we should avoid erasing it if the drop + // down is cancelled (see #8474) + m_lastAcceptedSelection = wxID_NONE; + } + break; + case CBN_SELENDOK: #ifndef __SMARTPHONE__ // we need to reset this to prevent the selection from being undone @@ -343,6 +355,7 @@ bool wxComboBox::MSWCommand(WXUINT param, WXWORD id) // logical as the text does change) case CBN_EDITCHANGE: + if ( m_allowTextEvents ) { wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, GetId()); @@ -364,7 +377,7 @@ bool wxComboBox::MSWCommand(WXUINT param, WXWORD id) } // skip wxChoice version as it would generate its own events for - // CBN_SELENDOK + // CBN_SELENDOK and also interfere with our handling of CBN_DROPDOWN return true; }