Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a55ac381 authored by lucychang's avatar lucychang
Browse files

Marks disabled list item to be non-longClickable for accessibility

A disabled item is a separator which should not be long-clickable, and
also remove the code to auto assign enabled value for accessibility.
The enabled value should be determined by the application developers.

Bug: 149810256
Test: manually test on ListView and GridView
Change-Id: I51ceeae2fb9d469e02059aafaf19a1442ff5d1c1
parent dbe59006
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -2543,33 +2543,32 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
            return;
        }

        boolean isItemEnabled = view.isEnabled() && isEnabled();
        boolean isItemActionable = isEnabled();
        final ViewGroup.LayoutParams lp = view.getLayoutParams();
        if (lp instanceof AbsListView.LayoutParams) {
            isItemEnabled &= ((AbsListView.LayoutParams) lp).isEnabled;
            isItemActionable &= ((AbsListView.LayoutParams) lp).isEnabled;
        }

        info.setEnabled(isItemEnabled);

        if (position == getSelectedItemPosition()) {
            info.setSelected(true);
            addAccessibilityActionIfEnabled(info, isItemEnabled,
            addAccessibilityActionIfEnabled(info, isItemActionable,
                    AccessibilityAction.ACTION_CLEAR_SELECTION);
        } else  {
            addAccessibilityActionIfEnabled(info, isItemEnabled,
            addAccessibilityActionIfEnabled(info, isItemActionable,
                    AccessibilityAction.ACTION_SELECT);
        }

        if (isItemClickable(view)) {
            addAccessibilityActionIfEnabled(info, isItemEnabled, AccessibilityAction.ACTION_CLICK);
            addAccessibilityActionIfEnabled(info, isItemActionable,
                    AccessibilityAction.ACTION_CLICK);
            // A disabled item is a separator which should not be clickable.
            info.setClickable(isItemEnabled);
            info.setClickable(isItemActionable);
        }

        if (isLongClickable()) {
            addAccessibilityActionIfEnabled(info, isItemEnabled,
            addAccessibilityActionIfEnabled(info, isItemActionable,
                    AccessibilityAction.ACTION_LONG_CLICK);
            info.setLongClickable(true);
            info.setLongClickable(isItemActionable);
        }
    }