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

Commit 0963cc24 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Disabled items shouldn't also be marked as unactionable." into qt-dev

parents 7983bfb3 08de63ea
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -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);
            addAccessibilityActionIfEnabled(info, isItemEnabled,
                    AccessibilityAction.ACTION_CLEAR_SELECTION);
        } else  {
            info.addAction(AccessibilityAction.ACTION_SELECT);
            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();
    }