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

Commit f1507a6a authored by Vadim Tryshev's avatar Vadim Tryshev
Browse files

Making overview panel accessible via Tab

Keyboard navigation of AllAppsContainerView is broken in TOT; disabling
focusing there is necessary for Recents.

Bug: 72222505
Test: Manual
Change-Id: I85d544f7c8dbdaf12e49de51c6626bbc3dc32917
parent 8417a7b5
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -13,9 +13,11 @@
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<com.android.quickstep.views.TaskView xmlns:android="http://schemas.android.com/apk/res/android"
<com.android.quickstep.views.TaskView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="false"
    android:elevation="4dp">

    <com.android.quickstep.views.TaskThumbnailView
@@ -29,5 +31,6 @@
        android:layout_width="@dimen/task_thumbnail_icon_size"
        android:layout_height="@dimen/task_thumbnail_icon_size"
        android:importantForAccessibility="no"
        android:focusable="false"
        android:layout_gravity="top|center_horizontal" />
</com.android.quickstep.views.TaskView>
 No newline at end of file
+9 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.quickstep.views;
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS;

import android.content.Context;
import android.graphics.Rect;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
@@ -43,4 +44,12 @@ public class ClearAllButton extends Button {
        }
        return res;
    }

    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        super.onFocusChanged(focused, direction, previouslyFocusedRect);
        if (focused) {
            mRecentsView.revealClearAllButton();
        }
    }
}
+25 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Handler;
import android.os.UserHandle;
import android.support.annotation.Nullable;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
@@ -967,6 +968,13 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            switch (event.getKeyCode()) {
                case KeyEvent.KEYCODE_TAB:
                    if (!event.isAltPressed() &&
                            getNextPage() ==
                                    (event.isShiftPressed() ? 0 : getChildCount() - 1)) {
                        // If not Alt-Tab navigation, don't loop forever in the carousel and leave
                        // it once we reached the end.
                        return false;
                    }
                    snapToPageRelative(event.isShiftPressed() ? -1 : 1);
                    return true;
                case KeyEvent.KEYCODE_DPAD_RIGHT:
@@ -992,6 +1000,22 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
        return super.dispatchKeyEvent(event);
    }

    @Override
    protected void onFocusChanged(boolean gainFocus, int direction,
            @Nullable Rect previouslyFocusedRect) {
        super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
        if (gainFocus && getChildCount() > 0) {
            switch (direction) {
                case FOCUS_FORWARD:
                    setCurrentPage(0);
                    break;
                case FOCUS_BACKWARD:
                    setCurrentPage(getChildCount() - 1);
                    break;
            }
        }
    }

    public void snapToTaskAfterNext() {
        snapToPageRelative(1);
    }
@@ -1303,6 +1327,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
    }

    public void revealClearAllButton() {
        setCurrentPage(getChildCount() - 1); // Loads tasks info if needed.
        scrollTo(mIsRtl ? 0 : computeMaxScrollX(), 0);
    }

+10 −0
Original line number Diff line number Diff line
@@ -25,10 +25,13 @@ import android.util.AttributeSet;
import android.util.FloatProperty;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;

import com.android.launcher3.InsettableFrameLayout;
import com.android.launcher3.R;

import java.util.ArrayList;

public class RecentsViewContainer extends InsettableFrameLayout {
    public static final FloatProperty<RecentsViewContainer> CONTENT_ALPHA =
            new FloatProperty<RecentsViewContainer>("contentAlpha") {
@@ -104,4 +107,11 @@ public class RecentsViewContainer extends InsettableFrameLayout {
        mRecentsView.setContentAlpha(alpha);
        setVisibility(alpha > 0 ? VISIBLE : GONE);
    }

    @Override
    public void addFocusables(ArrayList<View> views, int direction, int focusableMode) {
        // Carousel is first in tab order.
        views.add(mRecentsView);
        views.add(mClearAllButton);
    }
}
 No newline at end of file
+1 −2
Original line number Diff line number Diff line
@@ -23,8 +23,7 @@
    android:layout_height="match_parent"
    android:clipChildren="true"
    android:clipToPadding="false"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:focusable="false"
    android:saveEnabled="false" >

    <include layout="@layout/all_apps_rv_layout" />
Loading