wxPopupTransientWindow::Popup no longer captures the mouse, so do it in

wxPopupMenuWindow instead, and wxPopupTranientWindow::OnIdle also now disables
the capture when the cursor is inside the popup, so override that too.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34060 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Michael Wetherell 2005-05-14 15:49:19 +00:00
parent 3143083e9c
commit ed5903b61b

View File

@ -138,6 +138,13 @@ public:
// called when a submenu is dismissed
void OnSubmenuDismiss(bool dismissParent);
// the default wxMSW wxPopupTransientWindow::OnIdle disables the capture
// when the cursor is inside the popup, which dsables the menu tracking
// so override it to do nothing
#ifdef __WXMSW__
void OnIdle(wxIdleEvent& event) { }
#endif
// get the currently selected item (may be NULL)
wxMenuItem *GetCurrentItem() const
{
@ -282,6 +289,9 @@ BEGIN_EVENT_TABLE(wxPopupMenuWindow, wxPopupTransientWindow)
EVT_LEFT_UP(wxPopupMenuWindow::OnLeftUp)
EVT_MOTION(wxPopupMenuWindow::OnMouseMove)
EVT_LEAVE_WINDOW(wxPopupMenuWindow::OnMouseLeave)
#ifdef __WXMSW__
EVT_IDLE(wxPopupMenuWindow::OnIdle)
#endif
END_EVENT_TABLE()
BEGIN_EVENT_TABLE(wxMenuBar, wxMenuBarBase)
@ -428,6 +438,11 @@ void wxPopupMenuWindow::Popup(wxWindow *focus)
wxPopupTransientWindow::Popup(focus);
// the base class no-longer captures the mouse automatically when Popup
// is called, so do it here to allow the menu tracking to work
if ( !HasCapture() )
CaptureMouse();
#ifdef __WXMSW__
// ensure that this window is really on top of everything: without using
// SetWindowPos() it can be covered by its parent menu which is not