public override void MenuWillOpen(NSMenu menu) { if (owner.currentMenu != menu) { var cancelEventArgs = new CancelEventArgs(); if (owner.owner_item != null && owner.owner_item is ToolStripDropDownItem) { ToolStripDropDownItem dropdown_owner = (ToolStripDropDownItem)owner.owner_item; dropdown_owner.OnDropDownShow(cancelEventArgs); } if (!cancelEventArgs.Cancel) { owner.OnOpening(cancelEventArgs); } if (cancelEventArgs.Cancel) { menu.CancelTrackingWithoutAnimation(); return; } } owner.is_visible = true; owner.currentMenu = menu; owner.OnVisibleChanged(EventArgs.Empty); // Send WM_CANCELMODE to cancel any grabs owner.CancelGrab(); // Convert all the menu items to NSMenuItems (w/ embedded views if necessary) if (!beforePopupCalled) { BeforePopup(); } owner.OnOpened(EventArgs.Empty); }