Don't re-enter wxComboCtrlBase::HidePopup

Under wxMSW this method is re-entered due to triggering EVT_ACTIVATE when EVT_LEFT_UP is being already handled.
We need to prevent this to avoid generating spurious EVT_TEXT events and raising errors on calling SetFocus().

Closes #18260.
This commit is contained in:
Artur Wieczorek 2018-11-14 21:30:34 +01:00
parent ae3e581bb9
commit c05fac0ade
2 changed files with 3 additions and 2 deletions

View File

@ -455,7 +455,7 @@ public:
enum
{
Hidden = 0,
//Closing = 1,
Closing = 1,
Animating = 2,
Visible = 3
};

View File

@ -2571,8 +2571,9 @@ void wxComboCtrlBase::OnPopupDismiss(bool generateEvent)
void wxComboCtrlBase::HidePopup(bool generateEvent)
{
// Should be able to call this without popup interface
if ( IsPopupWindowState(Hidden) )
if ( IsPopupWindowState(Hidden) || IsPopupWindowState(Closing) )
return;
m_popupWinState = Closing; // To prevent from reentering
// transfer value and show it in textctrl, if any
if ( !IsPopupWindowState(Animating) )