Assigned
Status Update
Comments
kl...@google.com <kl...@google.com>
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
Author: Louis Pullen-Freilich <
Link:
Adds OverscrollEffect#withoutDrawing and OverscrollEffect#withoutEventHandling
Expand for full commit details
Adds OverscrollEffect#withoutDrawing and OverscrollEffect#withoutEventHandling
These APIs allow overscroll to have events dispatched to it by one component, and rendered in a separate component.
Fixes: b/266550551
Fixes: b/204650733
Fixes: b/255554340
Fixes: b/229537244
Test: OverscrollTest
Relnote: "Adds OverscrollEffect#withoutDrawing and OverscrollEffect#withoutEventHandling APIs - these APIs create a wrapped instance of the provided overscroll effect that doesn't draw / handle events respectively, which allows for rendering overscroll in a separate component from the component that is dispatching events. For example, disabling drawing the overscroll inside a lazy list, and then drawing the overscroll separately on top / elsewhere."
Change-Id: Idbb3d91546b49c1987a041f959bce4b2b09a9f61
Files:
- M
compose/foundation/foundation/api/current.txt
- M
compose/foundation/foundation/api/restricted_current.txt
- M
compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/OverscrollDemo.kt
- M
compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/OverscrollSample.kt
- M
compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/OverscrollTest.kt
- M
compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Overscroll.kt
Hash: f64e25b7a473c757d080521e7dd97b3f6670f60d
Date: Fri Nov 01 18:43:56 2024
kl...@google.com <kl...@google.com> #3
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.compose.foundation:foundation:1.8.0-alpha06
androidx.compose.foundation:foundation-android:1.8.0-alpha06
androidx.compose.foundation:foundation-jvmstubs:1.8.0-alpha06
androidx.compose.foundation:foundation-linuxx64stubs:1.8.0-alpha06
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
commit 76005034a001dcd09b63446bbd2cd8675bf6b3fb
Author: Zach Klippenstein <klippenstein@google.com>
Date: Tue Jul 26 11:49:09 2022
Add a TODO to the comment about b/230536793 .
Test: n/a
Bug: b/230536793
Change-Id: Iac349fe713f2ac6b37429e7d147b2c6cff0c145c
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
https://android-review.googlesource.com/2166085
Branch: androidx-main
commit 76005034a001dcd09b63446bbd2cd8675bf6b3fb
Author: Zach Klippenstein <klippenstein@google.com>
Date: Tue Jul 26 11:49:09 2022
Add a TODO to the comment about
Test: n/a
Bug:
Change-Id: Iac349fe713f2ac6b37429e7d147b2c6cff0c145c
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
Description
When there are multiple focus modifiers (e.g.
onFocusChanged
) on a focus target, and all the modifiers are removed along with the target, only the lowest (closest to the target) modifier gets the event. I believe this is a regression introduced with the migration of the focus system to modifier locals, for a case that it seems we never had tests for.The situation is when there are multiple focus event modifiers listening to a single focus target, and all the event modifiers as well as the target are removed/detached at the same time. What should happen, I think, and based on talking to @Ralston Da Silva, is that all the event modifiers should get the final "focus=Inactive" event. But what is happening is:
onModifierLocalsUpdated
call first, in which they all remove themselves from the listener chain.onModifierLocalUpdated
, in which it asks the focus manager to clear focus.focusable()
.I believe this regression caused a text field bug, b/225541817 , in which the focus event modifiers applied by
CoreTextField
no longer receive that final "focus=Inactive" event and so don't hide the keyboard.Reproducing test: