[MenuItem][MacOS] Fix "onClick" being called twice when invoking menu item via ENTER / SPACE - #3933
Merged
Lawrence Win (lawrencewin) merged 3 commits intoJul 17, 2025
Conversation
Lawrence Win (lawrencewin)
requested review from
Saad Najmi (Saadnajmi) and
Ruriko Araki (rurikoaraki)
July 11, 2025 21:41
Lawrence Win (lawrencewin)
force-pushed
the
menuitem-duplicate-keydown-fix
branch
from
July 15, 2025 01:26
d20108d to
c658d7d
Compare
Ruriko Araki (rurikoaraki)
approved these changes
Jul 15, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Platforms Impacted
Description of changes
React Native MacOS pressables handle a special case for ENTER / SPACE keys for the
keyDown/keyDownevent handlers: these keys should also be interpreted as presses, thus causing the event to be passed to theonPresshandler. The code for this is found here: https://github.com/microsoft/react-native-macos/blob/48e607706bfcc25b4c28eba1aa352f409c02975e/packages/react-native/Libraries/Pressability/Pressability.js#L580-L617For the
MenuItem, we passonInvoke, the handler for clicks and keypresses, into bothpressandkeyDown/keyUphandlers. The code snippet above, then causesonClickto be called twice on the platform. We can fix this by simply marking the event as handled, soonClickis only called once.Verification
Tested locally, video:
menu.item.working.mp4
Pull request checklist
This PR has considered (when applicable):