Fixed
Status Update
Comments
jb...@google.com <jb...@google.com>
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-master-dev
commit fb1c82582399043b149eb2630f524c75de9c88dc
Author: Jelle Fresen <jellefresen@google.com>
Date: Thu Aug 15 11:34:36 2019
Disallow intercept, touch slop and canScroll in nestedPreScroll
* Disallow intercept (requestDisallowInterceptTouchEvent(true))
When scroll delta is consumed by dispatchNestedPreScroll, the parent
should be requested not to intercept subsequent touch events, just as
when scroll is consumed by the widget itself or dispatchNestedScroll.
* Touch slop
NestedScrollingChild implementations should only call
dispatchNestedPreScroll after the delta x/y has exceeded the touch slop.
* canScroll (canScrollHorizontally/canScrollVertically)
The dx/dy values passed to dispatchNestedPreScroll should be zero if the
child can't scroll in that direction.
Fixed in:
- RecyclerView
- NestedScrollView
Bug: 138668210
Bug: 139530818
Test: ./gradlew connectedCheck
Change-Id: I85b327ad096fbbd204adb92f630770ec7fad5990
M core/core/src/androidTest/java/androidx/core/widget/NestedScrollViewNestedScrollingChildTest.java
M core/core/src/main/java/androidx/core/widget/NestedScrollView.java
M recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewNestedScrolling3RequestDisallowInterceptTouchTest.java
M recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewNestedScrollingChildTest.java
M recyclerview/recyclerview/src/main/java/androidx/recyclerview/widget/RecyclerView.java
https://android-review.googlesource.com/1105373
https://goto.google.com/android-sha1/fb1c82582399043b149eb2630f524c75de9c88dc
Branch: androidx-master-dev
commit fb1c82582399043b149eb2630f524c75de9c88dc
Author: Jelle Fresen <jellefresen@google.com>
Date: Thu Aug 15 11:34:36 2019
Disallow intercept, touch slop and canScroll in nestedPreScroll
* Disallow intercept (requestDisallowInterceptTouchEvent(true))
When scroll delta is consumed by dispatchNestedPreScroll, the parent
should be requested not to intercept subsequent touch events, just as
when scroll is consumed by the widget itself or dispatchNestedScroll.
* Touch slop
NestedScrollingChild implementations should only call
dispatchNestedPreScroll after the delta x/y has exceeded the touch slop.
* canScroll (canScrollHorizontally/canScrollVertically)
The dx/dy values passed to dispatchNestedPreScroll should be zero if the
child can't scroll in that direction.
Fixed in:
- RecyclerView
- NestedScrollView
Bug: 138668210
Bug: 139530818
Test: ./gradlew connectedCheck
Change-Id: I85b327ad096fbbd204adb92f630770ec7fad5990
M core/core/src/androidTest/java/androidx/core/widget/NestedScrollViewNestedScrollingChildTest.java
M core/core/src/main/java/androidx/core/widget/NestedScrollView.java
M recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewNestedScrolling3RequestDisallowInterceptTouchTest.java
M recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewNestedScrollingChildTest.java
M recyclerview/recyclerview/src/main/java/androidx/recyclerview/widget/RecyclerView.java
jb...@google.com <jb...@google.com> #3
This has been fixed internally and will be available in the Navigation 2.5.0-alpha02
and 2.4.1
releases.
wb...@gmail.com <wb...@gmail.com> #4
Here are my observations with two Navigation versions:
2.3.5
-example.com/user/{userName}/details takes me to exampleFragment, not userProfile (incorrect)
- backbutton: correctly takes me back to the QR scanning app which I opened the URL with (correct)
- up button: takes me to leaderboard (correct)
2.4.0
-example.com/user/{userName}/details takes me to userProfile (correct)
- backbutton: takes me back to exampleFragment (incorrect, it should take me back to the qr scanning app)
- up button: takes me back to exampleFragment (incorrect, it should take me back to the leaderboard)
- Does the fix in 2.4.1 fixes both back and up button (when coming from another app). And when navigating using URI from within the app itself, both back or up button are identical and go back to the previous screen (no intermediate startdestinations from nested graphs) ?
- Any idea how we can already test 2.4.1 ?
Thanks
Wim
2.3.5
-
- backbutton: correctly takes me back to the QR scanning app which I opened the URL with (correct)
- up button: takes me to leaderboard (correct)
2.4.0
-
- backbutton: takes me back to exampleFragment (incorrect, it should take me back to the qr scanning app)
- up button: takes me back to exampleFragment (incorrect, it should take me back to the leaderboard)
- Does the fix in 2.4.1 fixes both back and up button (when coming from another app). And when navigating using URI from within the app itself, both back or up button are identical and go back to the previous screen (no intermediate startdestinations from nested graphs) ?
- Any idea how we can already test 2.4.1 ?
Thanks
Wim
jb...@google.com <jb...@google.com> #5
You can follow the
wb...@gmail.com <wb...@gmail.com> #6
Here are my observations with 2.5.0-SNAPSHOT (build id: 8144622)
-example.com/user/{userName}/details takes me to userProfile (correct)
- backbutton: takes me back to other app (correct)
- up button: takes me back to exampleFragment, then Leaderboard (correct, intermediate start destinations are present)
-
- backbutton: takes me back to other app (correct)
- up button: takes me back to exampleFragment, then Leaderboard (correct, intermediate start destinations are present)
Description
Version used: 2.4.0-rc01
Devices/Android versions reproduced on:
Pixel 6 / Android 12
In the example project I have the following nested nav graph structure:
nav_graph{ startDestination=home
home {...}
list { startDestination=leaderboard
leaderboard
exampleNestedGraph { startDestination=exampleFragment
exampleFragment - deepLink="
userProfile - deepLink="
}
}
form {...}
}
Following the deep link:
Then clicking back pops to the exampleFragment
Expected: Clicking back again takes the user to the leaderboard fragment, then clicking back a final time takes the user back to the home fragment.
Actual: Clicking back takes the user to the home fragment, skipping the leaderboard fragment.
I've also updated the bottomNavView_DeepLink_HandlesIntent_BackGoesToList test to test this case
It looks like this was introduced with