Tap on recents button twice to go to last app

Fixes: 190660016
Test: Tapped on recents twice and saw last app.
Tapped on recents and tried to tap on other app
icons and none of them launched.

Change-Id: Ie89f1ec0464f194087dc07ab99deb8223ab6ddb8
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
index 2efbd4f..743619b 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
@@ -93,6 +93,12 @@
          */
         public void updateInsetsTouchability(InsetsInfo insetsInfo) {
             insetsInfo.touchableRegion.setEmpty();
+            if (mActivity.canShowNavButtons()) {
+                // Always have nav buttons be touchable
+                mControllers.navbarButtonsViewController.addVisibleButtonsRegion(
+                        mTaskbarDragLayer, insetsInfo.touchableRegion);
+            }
+
             if (mTaskbarDragLayer.getAlpha() < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) {
                 // Let touches pass through us.
                 insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
@@ -105,8 +111,6 @@
                 // Buttons are visible, take over the full taskbar area
                 insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME);
             } else {
-                mControllers.navbarButtonsViewController.addVisibleButtonsRegion(
-                        mTaskbarDragLayer, insetsInfo.touchableRegion);
                 insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
             }
         }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
index 002d42d..8549ca2 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
@@ -94,8 +94,10 @@
     }
 
     private void navigateToOverview() {
-        mService.getOverviewCommandHelper()
-                .addCommand(OverviewCommandHelper.TYPE_SHOW);
+        int commandType = mService.getOverviewCommandHelper().isOverviewVisible() ?
+                OverviewCommandHelper.TYPE_TOGGLE :
+                OverviewCommandHelper.TYPE_SHOW;
+        mService.getOverviewCommandHelper().addCommand(commandType);
     }
 
     private void executeBack() {
diff --git a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
index dbdd75f..b06c1ca 100644
--- a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
+++ b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
@@ -136,6 +136,11 @@
         }
     }
 
+    public boolean isOverviewVisible() {
+        BaseActivityInterface activityInterface =
+                mOverviewComponentObserver.getActivityInterface();
+        return activityInterface.getVisibleRecentsView() != null;
+    }
     /**
      * Executes the task and returns true if next task can be executed. If false, then the next
      * task is deferred until {@link #scheduleNextTask} is called