From 2060a4b9e1246ea87ca00a78074eed7c3ec0ff43 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Fri, 10 Jul 2020 11:55:06 -0700 Subject: [PATCH] Prevent showing TaskMenuView if icon isn't present Also fixed another bug where the wrong layout orientation was being applied when overview rotated when launcher was in fixed portrait orientation. Fixes: 160182914 Test: Tested w/ PIP, split screen, w/o split screen w/ and w/o home rotation Change-Id: Iccffb637ae5c22d07745f2108facd4de716dc8d3 --- .../android/quickstep/views/TaskMenuView.java | 20 +++++++++++++++---- .../touch/LandscapePagedViewHandler.java | 3 ++- .../touch/PagedOrientationHandler.java | 2 +- .../touch/PortraitPagedViewHandler.java | 5 +++-- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java index ef66b7a396..8b49f2c212 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java @@ -169,7 +169,9 @@ public class TaskMenuView extends AbstractFloatingView { } if (mIsOpen) { mOptionLayout.removeAllViews(); - populateAndLayoutMenu(); + if (!populateAndLayoutMenu()) { + close(false); + } } } @@ -186,14 +188,22 @@ public class TaskMenuView extends AbstractFloatingView { } mActivity.getDragLayer().addView(this); mTaskView = taskView; - populateAndLayoutMenu(); + if (!populateAndLayoutMenu()) { + return false; + } post(this::animateOpen); return true; } - private void populateAndLayoutMenu() { + /** @return true if successfully able to populate task view menu, false otherwise */ + private boolean populateAndLayoutMenu() { + if (mTaskView.getTask().icon == null) { + // Icon may not be loaded + return false; + } addMenuOptions(mTaskView); orientAroundTaskView(mTaskView); + return true; } private void addMenuOptions(TaskView taskView) { @@ -240,8 +250,10 @@ public class TaskMenuView extends AbstractFloatingView { setLayoutParams(params); setScaleX(taskView.getScaleX()); setScaleY(taskView.getScaleY()); + boolean canActivityRotate = taskView.getRecentsView() + .mOrientationState.canRecentsActivityRotate(); mOptionLayout.setOrientation(orientationHandler - .getTaskMenuLayoutOrientation(mOptionLayout)); + .getTaskMenuLayoutOrientation(canActivityRotate, mOptionLayout)); setPosition(sTempRect.left - insets.left, sTempRect.top - insets.top, taskView.getPagedOrientationHandler()); } diff --git a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java index 48c773413f..5520046b9f 100644 --- a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java +++ b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java @@ -237,7 +237,8 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler { } @Override - public int getTaskMenuLayoutOrientation(LinearLayout taskMenuLayout) { + public int getTaskMenuLayoutOrientation(boolean canRecentsActivityRotate, + LinearLayout taskMenuLayout) { return LinearLayout.HORIZONTAL; } diff --git a/src/com/android/launcher3/touch/PagedOrientationHandler.java b/src/com/android/launcher3/touch/PagedOrientationHandler.java index 65b1a7a77e..0261dcc040 100644 --- a/src/com/android/launcher3/touch/PagedOrientationHandler.java +++ b/src/com/android/launcher3/touch/PagedOrientationHandler.java @@ -94,7 +94,7 @@ public interface PagedOrientationHandler { float getTaskMenuX(float x, View thumbnailView); float getTaskMenuY(float y, View thumbnailView); int getTaskMenuWidth(View view); - int getTaskMenuLayoutOrientation(LinearLayout taskMenuLayout); + int getTaskMenuLayoutOrientation(boolean canRecentsActivityRotate, LinearLayout taskMenuLayout); void setLayoutParamsForTaskMenuOptionItem(LinearLayout.LayoutParams lp); /** diff --git a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java index 79e5c87785..5293a50538 100644 --- a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java +++ b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java @@ -236,8 +236,9 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { } @Override - public int getTaskMenuLayoutOrientation(LinearLayout taskMenuLayout) { - return taskMenuLayout.getOrientation(); + public int getTaskMenuLayoutOrientation(boolean canRecentsActivityRotate, + LinearLayout taskMenuLayout) { + return canRecentsActivityRotate ? taskMenuLayout.getOrientation() : LinearLayout.VERTICAL; } @Override