propagate the click dismissing a popup window to the window beneath it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14546 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
9b8270da40
commit
326c7ea888
@ -268,7 +268,7 @@ void wxPopupTransientWindow::Popup(wxWindow *winFocus)
|
|||||||
m_focus->PushEventHandler(m_handlerFocus);
|
m_focus->PushEventHandler(m_handlerFocus);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // !__WXX11__
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxPopupTransientWindow::Dismiss()
|
void wxPopupTransientWindow::Dismiss()
|
||||||
@ -364,8 +364,30 @@ void wxPopupWindowHandler::OnLeftDown(wxMouseEvent& event)
|
|||||||
switch ( win->HitTest(pos.x, pos.y) )
|
switch ( win->HitTest(pos.x, pos.y) )
|
||||||
{
|
{
|
||||||
case wxHT_WINDOW_OUTSIDE:
|
case wxHT_WINDOW_OUTSIDE:
|
||||||
// clicking outside a popup dismisses it
|
{
|
||||||
m_popup->DismissAndNotify();
|
// do the coords translation now as after DismissAndNotify()
|
||||||
|
// m_popup may be destroyed
|
||||||
|
wxMouseEvent event2(event);
|
||||||
|
|
||||||
|
m_popup->ClientToScreen(&event2.m_x, &event2.m_y);
|
||||||
|
|
||||||
|
// clicking outside a popup dismisses it
|
||||||
|
m_popup->DismissAndNotify();
|
||||||
|
|
||||||
|
// dismissing a tooltip shouldn't waste a click, i.e. you
|
||||||
|
// should be able to dismiss it and press the button with the
|
||||||
|
// same click, so repost this event to the window beneath us
|
||||||
|
wxWindow *win = wxFindWindowAtPoint(event2.GetPosition());
|
||||||
|
if ( win )
|
||||||
|
{
|
||||||
|
// translate the event coords to the ones of the window
|
||||||
|
// which is going to get the event
|
||||||
|
win->ScreenToClient(&event2.m_x, &event2.m_y);
|
||||||
|
|
||||||
|
event2.SetEventObject(win);
|
||||||
|
wxPostEvent(win, event2);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef __WXUNIVERSAL__
|
#ifdef __WXUNIVERSAL__
|
||||||
|
Loading…
Reference in New Issue
Block a user