Merge "Overlap insets with item margins" into ub-launcher3-qt-dev
diff --git a/go/quickstep/res/values-sw480dp/dimens.xml b/go/quickstep/res/values-sw480dp/dimens.xml
index be27d4b..b48dafb 100644
--- a/go/quickstep/res/values-sw480dp/dimens.xml
+++ b/go/quickstep/res/values-sw480dp/dimens.xml
@@ -25,6 +25,6 @@
 
     <dimen name="clear_all_item_view_height">48dp</dimen>
     <dimen name="clear_all_item_view_top_margin">28dp</dimen>
-    <dimen name="clear_all_item_view_landscape_bottom_margin">28dp</dimen>
+    <dimen name="clear_all_item_view_bottom_margin">28dp</dimen>
     <dimen name="clear_all_button_width">140dp</dimen>
 </resources>
\ No newline at end of file
diff --git a/go/quickstep/res/values/dimens.xml b/go/quickstep/res/values/dimens.xml
index 60e997a..91040f2 100644
--- a/go/quickstep/res/values/dimens.xml
+++ b/go/quickstep/res/values/dimens.xml
@@ -25,6 +25,6 @@
 
     <dimen name="clear_all_item_view_height">36dp</dimen>
     <dimen name="clear_all_item_view_top_margin">20dp</dimen>
-    <dimen name="clear_all_item_view_landscape_bottom_margin">20dp</dimen>
+    <dimen name="clear_all_item_view_bottom_margin">20dp</dimen>
     <dimen name="clear_all_button_width">106dp</dimen>
 </resources>
\ No newline at end of file
diff --git a/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java b/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java
index ce22489..f951304 100644
--- a/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java
+++ b/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java
@@ -16,7 +16,6 @@
 package com.android.quickstep.views;
 
 import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
-import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
 
 import static androidx.recyclerview.widget.LinearLayoutManager.VERTICAL;
 
@@ -32,7 +31,6 @@
 import android.animation.PropertyValuesHolder;
 import android.animation.ValueAnimator;
 import android.content.Context;
-import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Rect;
 import android.util.ArraySet;
@@ -125,6 +123,7 @@
     private boolean mTransitionedFromApp;
     private AnimatorSet mLayoutAnimation;
     private final ArraySet<View> mLayingOutViews = new ArraySet<>();
+    private Rect mInsets;
     private final RecentsModel.TaskThumbnailChangeListener listener = (taskId, thumbnailData) -> {
         ArrayList<TaskItemView> itemViews = getTaskViews();
         for (int i = 0, size = itemViews.size(); i < size; i++) {
@@ -194,13 +193,25 @@
                         case ITEM_TYPE_CLEAR_ALL:
                             outRect.top = (int) res.getDimension(
                                     R.dimen.clear_all_item_view_top_margin);
-                            if (res.getConfiguration().orientation == ORIENTATION_LANDSCAPE) {
-                                outRect.bottom = (int) res.getDimension(
-                                        R.dimen.clear_all_item_view_landscape_bottom_margin);
+                            int desiredBottomMargin = (int) res.getDimension(
+                                    R.dimen.clear_all_item_view_bottom_margin);
+                            // Only add bottom margin if insets aren't enough.
+                            if (mInsets.bottom < desiredBottomMargin) {
+                                outRect.bottom = desiredBottomMargin - mInsets.bottom;
                             }
                             break;
                         case ITEM_TYPE_TASK:
-                            outRect.top = (int) res.getDimension(R.dimen.task_item_top_margin);
+                            int desiredTopMargin = (int) res.getDimension(
+                                    R.dimen.task_item_top_margin);
+                            if (mTaskRecyclerView.getChildAdapterPosition(view) ==
+                                    state.getItemCount() - 1) {
+                                // Only add top margin to top task view if insets aren't enough.
+                                if (mInsets.top < desiredTopMargin) {
+                                    outRect.top = desiredTopMargin - mInsets.bottom;
+                                }
+                                return;
+                            }
+                            outRect.top = desiredTopMargin;
                             break;
                         default:
                     }
@@ -233,11 +244,6 @@
         }
     }
 
-    @Override
-    protected void onConfigurationChanged(Configuration newConfig) {
-        mTaskRecyclerView.invalidateItemDecorations();
-    }
-
     /**
      * Set activity helper for the view to callback to.
      *
@@ -522,6 +528,8 @@
 
     @Override
     public void setInsets(Rect insets) {
+        mInsets = insets;
         mTaskRecyclerView.setPadding(insets.left, insets.top, insets.right, insets.bottom);
+        mTaskRecyclerView.invalidateItemDecorations();
     }
 }