Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix modals #1603

Merged
merged 4 commits into from
Sep 24, 2021
Merged

Fix modals #1603

merged 4 commits into from
Sep 24, 2021

Conversation

jakub-gonet
Copy link
Member

@jakub-gonet jakub-gonet commented Aug 27, 2021

Description

Fixes #139

  1. Removed RNGHModalUtils

    This class gave access to ReactModalHostView.DialogRootViewGroup in order to
    call #onChildStartedNativeGesture() and use instanceof on it. Checks for
    ReactRootView / DialogRootViewGroup can be unified by utilizing RootView (which
    both of those classes implement).

  2. Always render GestureHandlerRootView

    This prevents gestures from not being delivered to RNGH when another
    GestureHandlerRootView is used before modal (e.g. from React Navigation).

    Note: This isn't an ideal fix since a new orchestrator will be created, preventing modals from interacting with handlers outside of them. However, this use case is rare. Having gestures working in modals is already an improvement.

Test plan

Tested on nestedGHRootViewWithModal.tsx example.

1. Removed RNGHModalUtils

This class gave access to ReactModalHostView.DialogRootViewGroup in order to
call #onChildStartedNativeGesture() and use instanceof on it. Checks for
ReactRootView/DialogRootViewGroup can be unified by utilizing RootView (which
both of those classes implement).

2. Always render GestureHandlerRootView

This prevents gestures from not being delivered to RNGH when another
GestureHandlerRootView is used before modal (e.g. from React Navigation).

Note: This isn't an ideal fix since a new orchestrator will be created, preventing
modals from interacting with handlers outside of them. However, this use case is
rare. Having gestures working in modals is already an improvement.
@jakub-gonet jakub-gonet self-assigned this Aug 27, 2021
@danilo-vieira
Copy link

Can anyone merge this? 👀

@jcgertig
Copy link

jcgertig commented Sep 24, 2021

@jakub-gonet @kmagiera any movement on this its a big blocker

@j-piasecki j-piasecki merged commit 5572e8d into master Sep 24, 2021
fluiddot pushed a commit to wordpress-mobile/react-native-gesture-handler that referenced this pull request Feb 25, 2022
Fixes software-mansion#139

Removed RNGHModalUtils

This class gave access to ReactModalHostView.DialogRootViewGroup in order to
call #onChildStartedNativeGesture() and use instanceof on it. Checks for
ReactRootView / DialogRootViewGroup can be unified by utilizing RootView (which
both of those classes implement).

Always render GestureHandlerRootView

This prevents gestures from not being delivered to RNGH when another
GestureHandlerRootView is used before modal (e.g. from React Navigation).

Note: This isn't an ideal fix since a new orchestrator will be created, preventing modals from interacting with handlers outside of them. However, this use case is rare. Having gestures working in modals is already an improvement.
@hugoh59
Copy link

hugoh59 commented Aug 3, 2022

I still have the issue on 2.5.0 with PanGestureHandler inside a Modal.

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.

Doesn't work in a modal
5 participants