X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d7cff34d1f6a2088edcfce3ea5934cdfc6658eb4..6f8239de2307c1ed34ae5a98b330748c60ef2b10:/src/common/popupcmn.cpp diff --git a/src/common/popupcmn.cpp b/src/common/popupcmn.cpp index dd72510c5f..7da199a713 100644 --- a/src/common/popupcmn.cpp +++ b/src/common/popupcmn.cpp @@ -354,6 +354,7 @@ void wxPopupWindowHandler::OnLeftDown(wxMouseEvent& event) wxWindow *sbar = NULL; wxWindow *win = (wxWindow *)event.GetEventObject(); + switch ( win->HitTest(pos.x, pos.y) ) { case wxHT_WINDOW_OUTSIDE: @@ -418,8 +419,15 @@ void wxPopupFocusHandler::OnKillFocus(wxFocusEvent& event) // when we lose focus we always disappear - unless it goes to the popup (in // which case we don't really lose it) - if ( event.GetWindow() != m_popup ) - m_popup->DismissAndNotify(); + wxWindow *win = event.GetWindow(); + while ( win ) + { + if ( win == m_popup ) + return; + win = win->GetParent(); + } + + m_popup->DismissAndNotify(); } void wxPopupFocusHandler::OnKeyDown(wxKeyEvent& event)