summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Tryshev <vadimt@google.com>2018-05-22 18:09:28 -0700
committerVadim Tryshev <vadimt@google.com>2018-05-23 11:14:19 -0700
commit8fbd56e1390c874300df882bfa46e74ad32d9514 (patch)
treea3e58abee5603d5d84febca88350a640647f12f5
parent15b82e14a86e17d69f0762cbe5810ecf685e5802 (diff)
downloadandroid_packages_apps_Trebuchet-8fbd56e1390c874300df882bfa46e74ad32d9514.tar.gz
android_packages_apps_Trebuchet-8fbd56e1390c874300df882bfa46e74ad32d9514.tar.bz2
android_packages_apps_Trebuchet-8fbd56e1390c874300df882bfa46e74ad32d9514.zip
Fixing arrow navigation in task carousel
Bug: 80155387 Change-Id: Icbdca2e8ad2a0e7e7dfbc8493942787d9fa58a62
-rw-r--r--quickstep/src/com/android/quickstep/views/RecentsView.java34
-rw-r--r--quickstep/src/com/android/quickstep/views/RecentsViewContainer.java8
2 files changed, 22 insertions, 20 deletions
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 829ed6c7a..0358028bc 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -930,11 +930,16 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
set.play(anim);
}
- private void snapToPageRelative(int delta) {
+ private boolean snapToPageRelative(int delta, boolean cycle) {
if (getPageCount() == 0) {
- return;
+ return false;
+ }
+ final int newPageUnbound = getNextPage() + delta;
+ if (!cycle && (newPageUnbound < 0 || newPageUnbound >= getChildCount())) {
+ return false;
}
- snapToPage((getNextPage() + getPageCount() + delta) % getPageCount());
+ snapToPage((newPageUnbound + getPageCount()) % getPageCount());
+ return true;
}
@Override
@@ -970,21 +975,12 @@ 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;
+ return snapToPageRelative(event.isShiftPressed() ? -1 : 1,
+ event.isAltPressed() /* cycle */);
case KeyEvent.KEYCODE_DPAD_RIGHT:
- snapToPageRelative(mIsRtl ? -1 : 1);
- return true;
+ return snapToPageRelative(mIsRtl ? -1 : 1, false /* cycle */);
case KeyEvent.KEYCODE_DPAD_LEFT:
- snapToPageRelative(mIsRtl ? 1 : -1);
- return true;
+ return snapToPageRelative(mIsRtl ? 1 : -1, false /* cycle */);
case KeyEvent.KEYCODE_DEL:
case KeyEvent.KEYCODE_FORWARD_DEL:
dismissTask((TaskView) getChildAt(getNextPage()), true /*animateTaskView*/,
@@ -1012,16 +1008,14 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
setCurrentPage(0);
break;
case FOCUS_BACKWARD:
+ case FOCUS_RIGHT:
+ case FOCUS_LEFT:
setCurrentPage(getChildCount() - 1);
break;
}
}
}
- public void snapToTaskAfterNext() {
- snapToPageRelative(1);
- }
-
public float getContentAlpha() {
return mContentAlpha;
}
diff --git a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
index 846c28b56..3391214de 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
@@ -70,6 +70,14 @@ public class RecentsViewContainer extends InsettableFrameLayout {
mRecentsView.setClearAllButton(mClearAllButton);
mClearAllButton.setRecentsView(mRecentsView);
+
+ if (mRecentsView.isRtl()) {
+ mClearAllButton.setNextFocusRightId(mRecentsView.getId());
+ mRecentsView.setNextFocusLeftId(mClearAllButton.getId());
+ } else {
+ mClearAllButton.setNextFocusLeftId(mRecentsView.getId());
+ mRecentsView.setNextFocusRightId(mClearAllButton.getId());
+ }
}
@Override