diff options
author | 2025-01-08 08:09:15 -0800 | |
---|---|---|
committer | 2025-01-28 11:14:20 -0800 | |
commit | 55c17628fc71f8911a9b5a5bdc6b9edda077c6ab (patch) | |
tree | 46ad62be5503739db8248235d7c5b1d164136195 /java | |
parent | 03dbce4cdbe6b9de78c87dd4ea2c140aabe0e0fe (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.kt | 17 |
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) |