From f1854f242716a4acb5b11191ce8a572e2d689fe7 Mon Sep 17 00:00:00 2001 From: Markus Stange <mstange.moz@gmail.com> Date: Tue, 13 Apr 2021 15:05:55 +0000 Subject: [PATCH] Bug 1704682 - Call OnMenuOpened before dispatching the popupshown event. r=harry This will cause nsXULPopupManager to change the state to "open" before the popupshown event fires. This is consistent with non-native menus. This was caught by dom/html/test/browser_content_contextmenu_userinput.js. Differential Revision: https://phabricator.services.mozilla.com/D111766 --- widget/cocoa/nsMenuX.mm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/widget/cocoa/nsMenuX.mm b/widget/cocoa/nsMenuX.mm index 43381f7838c18..cf66ea9046c39 100644 --- a/widget/cocoa/nsMenuX.mm +++ b/widget/cocoa/nsMenuX.mm @@ -411,17 +411,17 @@ void nsMenuX::MenuOpenedAsync() { mContent->AsElement()->SetAttr(kNameSpaceID_None, nsGkAtoms::open, u"true"_ns, true); } + // Notify our observer. + if (mObserver) { + mObserver->OnMenuOpened(); + } + // Fire popupshown. nsEventStatus status = nsEventStatus_eIgnore; WidgetMouseEvent event(true, eXULPopupShown, nullptr, WidgetMouseEvent::eReal); nsCOMPtr<nsIContent> popupContent = GetMenuPopupContent(); nsIContent* dispatchTo = popupContent ? popupContent : mContent; EventDispatcher::Dispatch(dispatchTo, nullptr, &event, nullptr, &status); - - // Notify our observer. - if (mObserver) { - mObserver->OnMenuOpened(); - } } void nsMenuX::MenuClosed() { -- GitLab