-
-
Notifications
You must be signed in to change notification settings - Fork 85
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
Disable input during predictive back animation #775
Disable input during predictive back animation #775
Conversation
WalkthroughThe changes involve the introduction of an Changes
Assessment against linked issues
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (3)
- extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/stack/animation/AbstractStackAnimation.kt (2 hunks)
- extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/stack/animation/predictiveback/PredictiveBackAnimation.kt (2 hunks)
- extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/utils/InputConsumingOverlay.kt (1 hunks)
Additional comments not posted (3)
extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/utils/InputConsumingOverlay.kt (1)
8-20
: Well-implemented utility for consuming pointer input events.The
InputConsumingOverlay
function is correctly implemented to consume all pointer input events, which is essential for preventing unintended user interactions during animations. The use of an infinite loop to handle events continuously is appropriate for this use case.extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/stack/animation/AbstractStackAnimation.kt (1)
13-13
: Refactoring to useInputConsumingOverlay
enhances maintainability and clarity.The replacement of the custom
Overlay
function withInputConsumingOverlay
simplifies the codebase and potentially optimizes pointer event handling. The conditional use of this overlay based on animation states and input disabling flags is well-implemented.Run the following script to verify the integration of
InputConsumingOverlay
in the broader system:Also applies to: 59-59
Verification successful
Integration of
InputConsumingOverlay
VerifiedThe integration of
InputConsumingOverlay
is consistent and well-implemented across the codebase, enhancing maintainability and clarity as intended. The usage inAbstractStackAnimation.kt
andPredictiveBackAnimation.kt
aligns with the expected behavior of consuming input events during animations. No issues were found in the integration.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the integration of `InputConsumingOverlay` in the broader system. # Test: Search for the usage of `InputConsumingOverlay`. Expect: Proper integration and no issues reported. rg --type kotlin -A 5 $'InputConsumingOverlay'Length of output: 5242
extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/stack/animation/predictiveback/PredictiveBackAnimation.kt (1)
21-21
: Logical conditional rendering ofInputConsumingOverlay
based on the state ofhandler.items
.The addition of
InputConsumingOverlay
under the condition thathandler.items.size > 1
is a thoughtful implementation to prevent unintended user interactions during complex transitions. This change should enhance the user experience by ensuring that interactions are only possible when appropriate.Run the following script to verify the behavior during runtime and ensure it aligns with user experience expectations:
Also applies to: 100-102
Verification successful
Conditional Rendering of
InputConsumingOverlay
VerifiedThe conditional rendering of
InputConsumingOverlay
based onhandler.items.size > 1
is present in the code, as described in the review comment. This implementation should indeed enhance the user experience by preventing unintended interactions during complex transitions.
- Location:
extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/stack/animation/predictiveback/PredictiveBackAnimation.kt
, line 101Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the behavior of `InputConsumingOverlay` during runtime. # Test: Search for runtime logs or issues related to `InputConsumingOverlay`. Expect: No issues and positive feedback on user experience. rg --type logs -A 5 $'InputConsumingOverlay'Length of output: 72
Script:
#!/bin/bash # Search for the implementation of InputConsumingOverlay to verify its conditional rendering. ast-grep --lang kotlin --pattern 'InputConsumingOverlay' # Search for any logging or comments related to InputConsumingOverlay to understand its runtime behavior. rg 'InputConsumingOverlay' -A 5Length of output: 6318
Script:
#!/bin/bash # Search for the conditional logic involving handler.items.size in PredictiveBackAnimation.kt rg 'handler.items.size' -A 5 -B 5 --glob '**/PredictiveBackAnimation.kt'Length of output: 1925
Fixes #773.
Summary by CodeRabbit
New Features
InputConsumingOverlay
to enhance input event handling during animations.InputConsumingOverlay
in the predictive back animation to improve user interaction control.Bug Fixes
Overlay
function, maintaining functionality to prevent user interactions during transitions.