Add wxComboBox::Popup() and Dismiss() to manually show or hide its popup.

Add implementations for wxMSW and wxGTK.

Closes #11506.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63242 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2010-01-24 01:00:45 +00:00
parent d21866cbd7
commit d1d1f8175d
8 changed files with 79 additions and 10 deletions

View File

@@ -702,6 +702,22 @@ void wxComboBox::OnUpdateSelectAll(wxUpdateUIEvent& event)
event.Enable(IsEditable() && !wxTextEntry::IsEmpty());
}
void wxComboBox::MSWDoPopupOrDismiss(bool show)
{
wxASSERT_MSG( !HasFlag(wxCB_SIMPLE),
wxT("can't popup/dismiss the list for simple combo box") );
// we *must* set focus to the combobox before showing or hiding the drop
// down as without this we get WM_LBUTTONDOWN messages with invalid HWND
// when hiding it (whether programmatically or manually) resulting in a
// crash when we pass them to IsDialogMessage()
//
// this can be seen in the combo page of the widgets sample under Windows 7
SetFocus();
::SendMessage(GetHwnd(), CB_SHOWDROPDOWN, show, 0);
}
#if wxUSE_TOOLTIPS
void wxComboBox::DoSetToolTip(wxToolTip *tip)