Enable Talkback for long clicking contacts
Bug: 24098561
Change-Id: I3630b739a6b618b8e4fd9f10c6a3c77896d02fff
diff --git a/src/com/android/contacts/list/MultiSelectContactsListFragment.java b/src/com/android/contacts/list/MultiSelectContactsListFragment.java
index bbb0d84..2465fb5 100644
--- a/src/com/android/contacts/list/MultiSelectContactsListFragment.java
+++ b/src/com/android/contacts/list/MultiSelectContactsListFragment.java
@@ -25,6 +25,7 @@
import android.os.Bundle;
import android.provider.ContactsContract;
import android.text.TextUtils;
+import android.view.accessibility.AccessibilityEvent;
import java.util.TreeSet;
@@ -125,6 +126,16 @@
mCheckBoxListListener.onStartDisplayingCheckBoxes();
}
getAdapter().toggleSelectionOfContactId(Long.valueOf(contactId));
+ // Sending an accessibility event of TYPE_VIEW_CLICKED and forcing Talkback to be
+ // performed on the checkbox.
+ // We need to:
+ // 1. consider the difference between position and adjPosition;
+ // 2. make sure the list item is not null before sending the event.
+ final int adjPosition = position + getListView().getHeaderViewsCount();
+ if (getListView() != null && adjPosition < getListView().getChildCount()) {
+ getListView().getChildAt(adjPosition).sendAccessibilityEvent(AccessibilityEvent
+ .TYPE_VIEW_CLICKED);
+ }
}
}
final int nowSelectedCount = getAdapter().getSelectedContactIds().size();