summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-06-12 20:10:31 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-06-12 20:10:31 +0000
commit0963cc2418d7ae09e73a71b542b61bc66a7c7d20 (patch)
tree0c0ab01d911b946d6e166cc4105236aca92f7618
parent7983bfb3e6a59ad2a97cc5a6a57756dcecbf8638 (diff)
parent08de63ea45d1916ac551855b4a74a27d3462e5a6 (diff)
Merge "Disabled items shouldn't also be marked as unactionable." into qt-dev
-rw-r--r--core/java/android/widget/AbsListView.java28
1 files changed, 18 insertions, 10 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 4cb552d29c32..85e9e4950cba 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -2553,34 +2553,42 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
final boolean isItemEnabled;
final ViewGroup.LayoutParams lp = view.getLayoutParams();
if (lp instanceof AbsListView.LayoutParams) {
- isItemEnabled = ((AbsListView.LayoutParams) lp).isEnabled;
+ isItemEnabled = ((AbsListView.LayoutParams) lp).isEnabled && isEnabled();
} else {
isItemEnabled = false;
}
- if (!isEnabled() || !isItemEnabled) {
- info.setEnabled(false);
- return;
- }
+ info.setEnabled(isItemEnabled);
if (position == getSelectedItemPosition()) {
info.setSelected(true);
- info.addAction(AccessibilityAction.ACTION_CLEAR_SELECTION);
- } else {
- info.addAction(AccessibilityAction.ACTION_SELECT);
+ addAccessibilityActionIfEnabled(info, isItemEnabled,
+ AccessibilityAction.ACTION_CLEAR_SELECTION);
+ } else {
+ addAccessibilityActionIfEnabled(info, isItemEnabled,
+ AccessibilityAction.ACTION_SELECT);
}
if (isItemClickable(view)) {
- info.addAction(AccessibilityAction.ACTION_CLICK);
+ addAccessibilityActionIfEnabled(info, isItemEnabled, AccessibilityAction.ACTION_CLICK);
info.setClickable(true);
}
if (isLongClickable()) {
- info.addAction(AccessibilityAction.ACTION_LONG_CLICK);
+ addAccessibilityActionIfEnabled(info, isItemEnabled,
+ AccessibilityAction.ACTION_LONG_CLICK);
info.setLongClickable(true);
}
}
+
+ private void addAccessibilityActionIfEnabled(AccessibilityNodeInfo info, boolean enabled,
+ AccessibilityAction action) {
+ if (enabled) {
+ info.addAction(action);
+ }
+ }
+
private boolean isItemClickable(View view) {
return !view.hasExplicitFocusable();
}