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

Commit 83cdb021 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Add accessibility scroll actions to TabWidget" into jb-mr1-dev

parents 303309cb 60530888
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnFocusChangeListener;
@@ -434,6 +435,42 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener {
    public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
        super.onInitializeAccessibilityNodeInfo(info);
        info.setClassName(TabWidget.class.getName());

        final int tabCount = getTabCount();

        if (tabCount > 1) {
            if (mSelectedTab > 0) {
                info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD);
                info.setScrollable(true);
            }

            if (mSelectedTab < (tabCount - 1)) {
                info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);
                info.setScrollable(true);
            }
        }
    }

    @Override
    public boolean performAccessibilityAction(int action, Bundle arguments) {
        final int tabCount = getTabCount();

        switch (action) {
            case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD:
                if ((tabCount > 1) && (mSelectedTab > 0)) {
                    focusCurrentTab(mSelectedTab - 1);
                    return true;
                }
                return false;
            case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD:
                if ((tabCount > 1) && (mSelectedTab < (tabCount - 1))) {
                    focusCurrentTab(mSelectedTab + 1);
                    return true;
                }
                return false;
        }

        return super.performAccessibilityAction(action, arguments);
    }

    /**