static public bool TrackPopupMenu (Menu menu, Point pnt)
{
if (menu.MenuItems.Count <= 0) // No submenus to track
return true;
MenuTracker tracker = menu.tracker;
tracker.active = true;
tracker.popup_active = true;
// Set GrabControl
Control src_ctrl = (tracker.TopMenu as ContextMenu).SourceControl;
tracker.GrabControl = src_ctrl.FindForm ();
if (tracker.GrabControl == null)
tracker.GrabControl = src_ctrl.FindRootParent ();
//tracker.GrabControl.ActiveTracker = tracker;
menu.Wnd = new PopUpWindow (tracker.GrabControl, menu);
menu.Wnd.Location = menu.Wnd.PointToClient (pnt);
//((PopUpWindow)menu.Wnd).ShowWindow ();
bool no_quit = true;
//Object queue_id = XplatUI.StartLoop(Thread.CurrentThread);
if (tracker.GrabControl.IsDisposed)
return true;
//if (!no_quit)
// XplatUI.PostQuitMessage(0);
if (menu.Wnd != null) {
menu.Wnd.Dispose ();
menu.Wnd = null;
}
return true;
}