void wxRibbonPanel::OnChildKillFocus(wxFocusEvent& evt) { if(m_child_with_focus == NULL) return; // Should never happen, but a check can't hurt m_child_with_focus->Disconnect(wxEVT_KILL_FOCUS, wxFocusEventHandler(wxRibbonPanel::OnChildKillFocus), NULL, this); m_child_with_focus = NULL; wxWindow *receiver = evt.GetWindow(); if(receiver == this || IsAncestorOf(this, receiver)) { m_child_with_focus = receiver; receiver->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(wxRibbonPanel::OnChildKillFocus), NULL, this); evt.Skip(); } else if(receiver == NULL || receiver != m_expanded_dummy) { HideExpanded(); // Do not skip event, as the panel has been de-expanded, causing the // child with focus to be reparented (and hidden). If the event // continues propagation then bad things happen. } else { evt.Skip(); } }
void wxRibbonPanel::OnMouseClick(wxMouseEvent& WXUNUSED(evt)) { if(IsMinimised()) { if(m_expanded_panel != NULL) { HideExpanded(); } else { ShowExpanded(); } } }
void wxRibbonPanel::OnKillFocus(wxFocusEvent& evt) { if(m_expanded_dummy) { wxWindow *receiver = evt.GetWindow(); if(IsAncestorOf(this, receiver)) { m_child_with_focus = receiver; receiver->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(wxRibbonPanel::OnChildKillFocus), NULL, this); } else if(receiver == NULL || receiver != m_expanded_dummy) { HideExpanded(); } } }
void wxRibbonPanel::OnMouseClick(wxMouseEvent& WXUNUSED(evt)) { if(IsMinimised()) { if(m_expanded_panel != NULL) { HideExpanded(); } else { ShowExpanded(); } } else if(IsExtButtonHovered()) { wxRibbonPanelEvent notification(wxEVT_RIBBONPANEL_EXTBUTTON_ACTIVATED, GetId()); notification.SetEventObject(this); notification.SetPanel(this); ProcessEvent(notification); } }