[MenuItem][MacOS] Fix "onClick" being called twice when invoking menu item via ENTER / SPACE #3933
+12
−0
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):