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

Commit b52b45c2 authored by Qasid Ahmad Sadiq's avatar Qasid Ahmad Sadiq Committed by android-build-merger
Browse files

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

am: f6950233

Change-Id: I6b1083880346194934be435d31ce4e66f5d34528
parents bbb483bb f6950233
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();
    }