git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62136
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// show/hide popup window
virtual void ShowPopup();
// show/hide popup window
virtual void ShowPopup();
- virtual void HidePopup();
+ virtual void HidePopup(bool generateEvent=false);
// Override for totally custom combo action
virtual void OnButtonClick();
// Override for totally custom combo action
virtual void OnButtonClick();
bool IsCreated() const { return m_iFlags & wxCC_IFLAG_CREATED ? true : false; }
// common code to be called on popup hide/dismiss
bool IsCreated() const { return m_iFlags & wxCC_IFLAG_CREATED ? true : false; }
// common code to be called on popup hide/dismiss
+ void OnPopupDismiss(bool generateEvent);
// PopupShown states
enum
// PopupShown states
enum
@event{EVT_TEXT_ENTER(id, func)}
Process a wxEVT_COMMAND_TEXT_ENTER event, when RETURN is pressed in
the combo control.
@event{EVT_TEXT_ENTER(id, func)}
Process a wxEVT_COMMAND_TEXT_ENTER event, when RETURN is pressed in
the combo control.
+ @event{EVT_COMBOX_DROPDOWN(id, func)}
+ Process a wxEVT_COMMAND_COMBOBOX_DROPDOWN event, which is generated
+ when the popup window is shown (drops down).
+ @event{EVT_COMBOX_CLOSEUP(id, func)}
+ Process a wxEVT_COMMAND_COMBOBOX_CLOSEUP event, which is generated
+ when the popup window of the combo control disappears (closes up).
@endEventTable
@library{wxbase}
@endEventTable
@library{wxbase}
/**
Dismisses the popup window.
/**
Dismisses the popup window.
+
+ @param generateEvent
+ Set this to @true in order to generate
+ wxEVT_COMMAND_COMBOBOX_CLOSEUP event.
- virtual void HidePopup();
+ virtual void HidePopup(bool generateEvent=false);
/**
Returns @true if the popup is currently shown
/**
Returns @true if the popup is currently shown
void OnButtonAddMany(wxCommandEvent& event);
void OnComboBox(wxCommandEvent& event);
void OnButtonAddMany(wxCommandEvent& event);
void OnComboBox(wxCommandEvent& event);
+ void OnDropDown(wxCommandEvent& event);
+ void OnCloseUp(wxCommandEvent& event);
void OnComboText(wxCommandEvent& event);
void OnCheckOrRadioBox(wxCommandEvent& event);
void OnComboText(wxCommandEvent& event);
void OnCheckOrRadioBox(wxCommandEvent& event);
EVT_UPDATE_UI(ODComboPage_ChangeText, ODComboboxWidgetsPage::OnUpdateUIDeleteSelButton)
EVT_UPDATE_UI(ODComboPage_DeleteSel, ODComboboxWidgetsPage::OnUpdateUIDeleteSelButton)
EVT_UPDATE_UI(ODComboPage_ChangeText, ODComboboxWidgetsPage::OnUpdateUIDeleteSelButton)
EVT_UPDATE_UI(ODComboPage_DeleteSel, ODComboboxWidgetsPage::OnUpdateUIDeleteSelButton)
+ EVT_COMBOBOX_DROPDOWN(ODComboPage_Combo, ODComboboxWidgetsPage::OnDropDown)
+ EVT_COMBOBOX_CLOSEUP(ODComboPage_Combo, ODComboboxWidgetsPage::OnCloseUp)
EVT_COMBOBOX(ODComboPage_Combo, ODComboboxWidgetsPage::OnComboBox)
EVT_TEXT(ODComboPage_Combo, ODComboboxWidgetsPage::OnComboText)
EVT_TEXT_ENTER(ODComboPage_Combo, ODComboboxWidgetsPage::OnComboText)
EVT_COMBOBOX(ODComboPage_Combo, ODComboboxWidgetsPage::OnComboBox)
EVT_TEXT(ODComboPage_Combo, ODComboboxWidgetsPage::OnComboText)
EVT_TEXT_ENTER(ODComboPage_Combo, ODComboboxWidgetsPage::OnComboText)
+void ODComboboxWidgetsPage::OnDropDown(wxCommandEvent& WXUNUSED(event))
+{
+ wxLogMessage(wxT("Combobox dropped down"));
+}
+
+void ODComboboxWidgetsPage::OnCloseUp(wxCommandEvent& WXUNUSED(event))
+{
+ wxLogMessage(wxT("Combobox closed up"));
+}
+
#endif //wxUSE_ODCOMBOBOX
#endif //wxUSE_ODCOMBOBOX
winFocused != m_combo->GetButton() // GTK (atleast) requires this
)
{
winFocused != m_combo->GetButton() // GTK (atleast) requires this
)
{
+ m_combo->HidePopup(true);
void wxComboFrameEventHandler::OnMenuEvent( wxMenuEvent& event )
{
void wxComboFrameEventHandler::OnMenuEvent( wxMenuEvent& event )
{
+ m_combo->HidePopup(true);
event.Skip();
}
void wxComboFrameEventHandler::OnMouseEvent( wxMouseEvent& event )
{
event.Skip();
}
void wxComboFrameEventHandler::OnMouseEvent( wxMouseEvent& event )
{
+ m_combo->HidePopup(true);
event.Skip();
}
void wxComboFrameEventHandler::OnClose( wxCloseEvent& event )
{
event.Skip();
}
void wxComboFrameEventHandler::OnClose( wxCloseEvent& event )
{
+ m_combo->HidePopup(true);
event.Skip();
}
void wxComboFrameEventHandler::OnActivate( wxActivateEvent& event )
{
event.Skip();
}
void wxComboFrameEventHandler::OnActivate( wxActivateEvent& event )
{
+ m_combo->HidePopup(true);
event.Skip();
}
void wxComboFrameEventHandler::OnResize( wxSizeEvent& event )
{
event.Skip();
}
void wxComboFrameEventHandler::OnResize( wxSizeEvent& event )
{
+ m_combo->HidePopup(true);
event.Skip();
}
void wxComboFrameEventHandler::OnMove( wxMoveEvent& event )
{
event.Skip();
}
void wxComboFrameEventHandler::OnMove( wxMoveEvent& event )
{
+ m_combo->HidePopup(true);
wxASSERT_MSG( combo->IsKindOf(CLASSINFO(wxComboCtrlBase)),
wxT("parent might not be wxComboCtrl, but check IMPLEMENT_DYNAMIC_CLASS(2) macro for correctness") );
wxASSERT_MSG( combo->IsKindOf(CLASSINFO(wxComboCtrlBase)),
wxT("parent might not be wxComboCtrl, but check IMPLEMENT_DYNAMIC_CLASS(2) macro for correctness") );
- combo->OnPopupDismiss();
+ combo->OnPopupDismiss(true);
}
#endif // USES_WXPOPUPTRANSIENTWINDOW
}
#endif // USES_WXPOPUPTRANSIENTWINDOW
if ( !event.GetActive() )
{
// Tell combo control that we are dismissed.
if ( !event.GetActive() )
{
// Tell combo control that we are dismissed.
+ m_combo->HidePopup(true);
void wxComboPopup::Dismiss()
{
void wxComboPopup::Dismiss()
{
+ m_combo->HidePopup(true);
}
// ----------------------------------------------------------------------------
}
// ----------------------------------------------------------------------------
if ( IsPopupWindowState(Visible) &&
( evtType == wxEVT_LEFT_DOWN || evtType == wxEVT_RIGHT_DOWN ) )
{
if ( IsPopupWindowState(Visible) &&
( evtType == wxEVT_LEFT_DOWN || evtType == wxEVT_RIGHT_DOWN ) )
{
#if USES_WXPOPUPWINDOW
// Click here always hides the popup.
if ( m_popupWinType == POPUPWIN_WXPOPUPWINDOW )
#if USES_WXPOPUPWINDOW
// Click here always hides the popup.
if ( m_popupWinType == POPUPWIN_WXPOPUPWINDOW )
// Destroy popup window and the child control
void wxComboCtrlBase::DestroyPopup()
{
// Destroy popup window and the child control
void wxComboCtrlBase::DestroyPopup()
{
if ( m_popup )
m_popup->RemoveEventHandler(m_popupExtraHandler);
if ( m_popup )
m_popup->RemoveEventHandler(m_popupExtraHandler);
// Derived classes can override this method for totally custom
// popup action
if ( !IsPopupWindowState(Visible) )
// Derived classes can override this method for totally custom
// popup action
if ( !IsPopupWindowState(Visible) )
+ {
+ wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_DROPDOWN, GetId());
+ event.SetEventObject(this);
+ ProcessCommand(event);
+
+ {
+ HidePopup(true);
+ }
}
void wxComboCtrlBase::ShowPopup()
}
void wxComboCtrlBase::ShowPopup()
-void wxComboCtrlBase::OnPopupDismiss()
+void wxComboCtrlBase::OnPopupDismiss(bool generateEvent)
{
// Just in case, avoid double dismiss
if ( IsPopupWindowState(Hidden) )
{
// Just in case, avoid double dismiss
if ( IsPopupWindowState(Hidden) )
+
+ if ( generateEvent )
+ {
+ wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_CLOSEUP, GetId());
+ event.SetEventObject(this);
+ ProcessCommand(event);
+ }
-void wxComboCtrlBase::HidePopup()
+void wxComboCtrlBase::HidePopup(bool generateEvent)
{
// Should be able to call this without popup interface
if ( IsPopupWindowState(Hidden) )
{
// Should be able to call this without popup interface
if ( IsPopupWindowState(Hidden) )
+ OnPopupDismiss(generateEvent);
}
// ----------------------------------------------------------------------------
}
// ----------------------------------------------------------------------------