mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-03 09:26:51 +00:00
Fixing keyboard navigation when Overview list is empty
Bug: 80155387 Change-Id: Ife86fe4b718ef01291a04b21020155110d75fa7b Testing: Manual
This commit is contained in:
@@ -18,8 +18,6 @@ package com.android.launcher3.uioverrides;
|
||||
import static com.android.launcher3.LauncherAnimUtils.ALL_APPS_TRANSITION_MS;
|
||||
import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import com.android.launcher3.AbstractFloatingView;
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.LauncherState;
|
||||
@@ -61,11 +59,6 @@ public class AllAppsState extends LauncherState {
|
||||
return 0f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getFinalFocus(Launcher launcher) {
|
||||
return launcher.getAppsView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float[] getWorkspaceScaleAndTranslation(Launcher launcher) {
|
||||
float[] scaleAndTranslation = LauncherState.OVERVIEW.getWorkspaceScaleAndTranslation(
|
||||
|
||||
@@ -83,11 +83,6 @@ public class OverviewState extends LauncherState {
|
||||
DiscoveryBounce.showForOverviewIfNeeded(launcher);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getFinalFocus(Launcher launcher) {
|
||||
return launcher.getOverviewPanel();
|
||||
}
|
||||
|
||||
public PageAlphaProvider getWorkspacePageAlphaProvider(Launcher launcher) {
|
||||
return new PageAlphaProvider(DEACCEL_2) {
|
||||
@Override
|
||||
|
||||
@@ -271,6 +271,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
.getDimensionPixelSize(R.dimen.recents_empty_message_text_padding);
|
||||
setWillNotDraw(false);
|
||||
updateEmptyMessage();
|
||||
setFocusable(false);
|
||||
}
|
||||
|
||||
public boolean isRtl() {
|
||||
@@ -931,16 +932,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVisibilityAggregated(boolean isVisible) {
|
||||
super.onVisibilityAggregated(isVisible);
|
||||
if (isVisible && !isFocused()) {
|
||||
// Having focus, even in touch mode, keeps us from losing [Alt+]Tab by preventing
|
||||
// switching to keyboard mode.
|
||||
requestFocus();
|
||||
}
|
||||
}
|
||||
|
||||
private void runDismissAnimation(PendingAnimation pendingAnim) {
|
||||
AnimatorPlaybackController controller = AnimatorPlaybackController.wrap(
|
||||
pendingAnim.anim, DISMISS_TASK_DURATION);
|
||||
@@ -1285,6 +1276,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
private void onChildViewsChanged() {
|
||||
final int childCount = getChildCount();
|
||||
mClearAllButton.setVisibility(childCount == 0 ? INVISIBLE : VISIBLE);
|
||||
setFocusable(childCount != 0);
|
||||
}
|
||||
|
||||
public void revealClearAllButton() {
|
||||
|
||||
@@ -113,8 +113,15 @@ public class RecentsViewContainer extends InsettableFrameLayout {
|
||||
|
||||
@Override
|
||||
public void addFocusables(ArrayList<View> views, int direction, int focusableMode) {
|
||||
// Carousel is first in tab order.
|
||||
views.add(mRecentsView);
|
||||
views.add(mClearAllButton);
|
||||
if (mRecentsView.getChildCount() > 0) {
|
||||
// Carousel is first in tab order.
|
||||
views.add(mRecentsView);
|
||||
views.add(mClearAllButton);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
|
||||
return mRecentsView.requestFocus(direction, previouslyFocusedRect) ||
|
||||
super.requestFocus(direction, previouslyFocusedRect);
|
||||
}
|
||||
}
|
||||
@@ -18,11 +18,11 @@ package com.android.launcher3;
|
||||
import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_AUTO;
|
||||
import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS;
|
||||
import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
|
||||
|
||||
import static com.android.launcher3.anim.Interpolators.ACCEL_2;
|
||||
import static com.android.launcher3.states.RotationHelper.REQUEST_NONE;
|
||||
|
||||
import android.graphics.Rect;
|
||||
import android.view.View;
|
||||
import android.view.animation.Interpolator;
|
||||
|
||||
import com.android.launcher3.states.SpringLoadedState;
|
||||
@@ -196,10 +196,6 @@ public class LauncherState {
|
||||
|
||||
public void onStateDisabled(Launcher launcher) { }
|
||||
|
||||
public View getFinalFocus(Launcher launcher) {
|
||||
return launcher.getWorkspace();
|
||||
}
|
||||
|
||||
public int getVisibleElements(Launcher launcher) {
|
||||
if (launcher.getDeviceProfile().isVerticalBarLayout()) {
|
||||
return HOTSEAT_ICONS | VERTICAL_SWIPE_INDICATOR;
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.launcher3;
|
||||
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_OVERVIEW_FADE;
|
||||
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_OVERVIEW_SCALE;
|
||||
@@ -35,7 +36,6 @@ import android.animation.AnimatorSet;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.support.annotation.IntDef;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.launcher3.anim.AnimationSuccessListener;
|
||||
import com.android.launcher3.anim.AnimatorPlaybackController;
|
||||
@@ -251,7 +251,7 @@ public class LauncherStateManager {
|
||||
prepareForAtomicAnimation(mState, state, builder);
|
||||
AnimatorSet animation = createAnimationToNewWorkspaceInternal(
|
||||
state, builder, onCompleteRunnable);
|
||||
Runnable runnable = new StartAnimRunnable(animation, state.getFinalFocus(mLauncher));
|
||||
Runnable runnable = new StartAnimRunnable(animation);
|
||||
if (delay > 0) {
|
||||
mUiHandler.postDelayed(runnable, delay);
|
||||
} else {
|
||||
@@ -397,6 +397,8 @@ public class LauncherStateManager {
|
||||
}
|
||||
|
||||
UiFactory.onLauncherStateOrResumeChanged(mLauncher);
|
||||
|
||||
mLauncher.getDragLayer().requestFocus();
|
||||
}
|
||||
|
||||
public void onWindowFocusChanged() {
|
||||
@@ -480,11 +482,9 @@ public class LauncherStateManager {
|
||||
private class StartAnimRunnable implements Runnable {
|
||||
|
||||
private final AnimatorSet mAnim;
|
||||
private final View mViewToFocus;
|
||||
|
||||
public StartAnimRunnable(AnimatorSet anim, View viewToFocus) {
|
||||
public StartAnimRunnable(AnimatorSet anim) {
|
||||
mAnim = anim;
|
||||
mViewToFocus = viewToFocus;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -492,9 +492,6 @@ public class LauncherStateManager {
|
||||
if (mConfig.mCurrentAnimation != mAnim) {
|
||||
return;
|
||||
}
|
||||
if (mViewToFocus != null) {
|
||||
mViewToFocus.requestFocus();
|
||||
}
|
||||
mAnim.start();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_TRANSITION_M
|
||||
import static com.android.launcher3.states.RotationHelper.REQUEST_LOCK;
|
||||
|
||||
import android.graphics.Rect;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.InstallShortcutReceiver;
|
||||
@@ -98,9 +97,4 @@ public class SpringLoadedState extends LauncherState {
|
||||
InstallShortcutReceiver.disableAndFlushInstallQueue(
|
||||
InstallShortcutReceiver.FLAG_DRAG_AND_DROP, launcher);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getFinalFocus(Launcher launcher) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,6 @@ import static com.android.launcher3.LauncherAnimUtils.ALL_APPS_TRANSITION_MS;
|
||||
import static com.android.launcher3.allapps.DiscoveryBounce.HOME_BOUNCE_SEEN;
|
||||
import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import com.android.launcher3.AbstractFloatingView;
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.LauncherState;
|
||||
@@ -67,11 +65,6 @@ public class AllAppsState extends LauncherState {
|
||||
return ALL_APPS_HEADER | ALL_APPS_CONTENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getFinalFocus(Launcher launcher) {
|
||||
return launcher.getAppsView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float[] getWorkspaceScaleAndTranslation(Launcher launcher) {
|
||||
return new float[] { 1f, 0,
|
||||
|
||||
Reference in New Issue
Block a user