Skip to content

[Android] Fix mouse interactions#4265

Merged
m-bert merged 4 commits into
mainfrom
@mbert/fix-mouse-android
Jun 16, 2026
Merged

[Android] Fix mouse interactions#4265
m-bert merged 4 commits into
mainfrom
@mbert/fix-mouse-android

Conversation

@m-bert

@m-bert m-bert commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

Description

#3850 restricted dispatching of generic motion events to only hover events. This caused a regression in which mouse events stopped being dispatched to handlers.

This PR allows mouse events to be dispatched to handlers and adds check for mouse button press in Long Press so it can activate timeout.

It also removes check for obsolete SDK version and inverts logic of skipping events - shouldActivateWithMouse wasn't very descriptive (especially in onHandle), so I renamed it to shouldSkipEvent instead.

Fixes #3889

Test plan

Tested on mouse buttons and Pressable examples

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes an Android regression where mouse click events stopped reaching gesture handlers after generic motion dispatching was restricted to hover-only events. This restores mouse button event propagation and updates gesture-handler filtering logic to consistently ignore redundant touch-stream events when a mouse is used.

Changes:

  • Dispatch ACTION_BUTTON_PRESS / ACTION_BUTTON_RELEASE through dispatchGenericMotionEvent so mouse clicks reach the orchestrator.
  • Add button-press awareness to LongPressGestureHandler so mouse long-press can trigger its timeout.
  • Rename/invert mouse-event filtering helper from shouldActivateWithMouse to shouldSkipEvent and remove obsolete SDK branching.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt Routes mouse button generic motion events (in addition to hover) into GH dispatching.
packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt Adds MotionEvent.isButtonAction() helper to detect button press/release actions.
packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt Reworks mouse filtering into shouldSkipEvent to drop redundant touch-stream events and wrong-button input.
packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt Updates call site to use the new shouldSkipEvent filter.
packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt Updates call site to use the new shouldSkipEvent filter.
packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt Updates call site to use shouldSkipEvent and starts long-press timeout on ACTION_BUTTON_PRESS.
packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt Updates call site to use the new shouldSkipEvent filter.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@m-bert m-bert merged commit f748e81 into main Jun 16, 2026
3 checks passed
@m-bert m-bert deleted the @mbert/fix-mouse-android branch June 16, 2026 13:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pressable not triggering onPress via mouse interaction on android

3 participants