summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
author Andrey Yepin <ayepin@google.com> 2025-01-08 08:09:15 -0800
committer Andrey Yepin <ayepin@google.com> 2025-01-28 11:14:20 -0800
commit55c17628fc71f8911a9b5a5bdc6b9edda077c6ab (patch)
tree46ad62be5503739db8248235d7c5b1d164136195 /java
parent03dbce4cdbe6b9de78c87dd4ea2c140aabe0e0fe (diff)
Fix targets TalkBack focus.
Targets should receive the TalkBack focus on tap. Fix: 388361798 Test: Manually test that the new pointer hover effect works as expected. Test: Manually test that targets receive TalkBack focus on tap. Flag: com.android.intentresolver.target_hover_and_keyboard_focus_states Change-Id: Ifb6a743f214a454e16bad45504bd8e107a6f0d28
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/intentresolver/widget/ChooserTargetItemView.kt17
1 files changed, 15 insertions, 2 deletions
diff --git a/java/src/com/android/intentresolver/widget/ChooserTargetItemView.kt b/java/src/com/android/intentresolver/widget/ChooserTargetItemView.kt
index b5a4d617..816a2b1d 100644
--- a/java/src/com/android/intentresolver/widget/ChooserTargetItemView.kt
+++ b/java/src/com/android/intentresolver/widget/ChooserTargetItemView.kt
@@ -22,7 +22,10 @@ import android.graphics.Color
import android.graphics.Paint
import android.util.AttributeSet
import android.util.TypedValue
+import android.view.InputDevice.SOURCE_MOUSE
import android.view.MotionEvent
+import android.view.MotionEvent.ACTION_HOVER_ENTER
+import android.view.MotionEvent.ACTION_HOVER_MOVE
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
@@ -93,7 +96,7 @@ class ChooserTargetItemView(
val iconView = iconView ?: return false
if (!isEnabled) return true
when (event.action) {
- MotionEvent.ACTION_HOVER_ENTER -> {
+ ACTION_HOVER_ENTER -> {
iconView.isHovered = true
}
MotionEvent.ACTION_HOVER_EXIT -> {
@@ -103,7 +106,17 @@ class ChooserTargetItemView(
return true
}
- override fun onInterceptHoverEvent(event: MotionEvent?) = true
+ override fun onInterceptHoverEvent(event: MotionEvent) =
+ if (event.isFromSource(SOURCE_MOUSE)) {
+ // This is the same logic as in super.onInterceptHoverEvent (ViewGroup) minus the check
+ // that the pointer fall on the scroll bar as we need to control the hover state of the
+ // icon.
+ // We also want to intercept only MOUSE hover events as the TalkBack's Explore by Touch
+ // (including single taps) reported as a hover event.
+ event.action == ACTION_HOVER_MOVE || event.action == ACTION_HOVER_ENTER
+ } else {
+ super.onInterceptHoverEvent(event)
+ }
override fun dispatchDraw(canvas: Canvas) {
super.dispatchDraw(canvas)