diff options
Diffstat (limited to 'quickstep/src/com/android/quickstep/views')
3 files changed, 44 insertions, 0 deletions
diff --git a/quickstep/src/com/android/quickstep/views/ClearAllButton.java b/quickstep/src/com/android/quickstep/views/ClearAllButton.java index d5c43a0f5..25e3dc6c1 100644 --- a/quickstep/src/com/android/quickstep/views/ClearAllButton.java +++ b/quickstep/src/com/android/quickstep/views/ClearAllButton.java @@ -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(); + } + } } diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 91d3350d7..ae8ebbe09 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -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; @@ -973,6 +974,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: @@ -998,6 +1006,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); } @@ -1309,6 +1333,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); } diff --git a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java index 429432b2f..06e2e8903 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java +++ b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java @@ -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 |