diff --git a/quickstep/src/com/android/quickstep/TaskSystemShortcut.java b/quickstep/src/com/android/quickstep/TaskSystemShortcut.java
index c81f044..42a28fb 100644
--- a/quickstep/src/com/android/quickstep/TaskSystemShortcut.java
+++ b/quickstep/src/com/android/quickstep/TaskSystemShortcut.java
@@ -18,6 +18,7 @@
 
 import static com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch.TAP;
 
+import android.app.Activity;
 import android.app.ActivityOptions;
 import android.content.ComponentName;
 import android.content.Intent;
@@ -49,6 +50,7 @@
 import com.android.systemui.shared.recents.view.AppTransitionAnimationSpecCompat;
 import com.android.systemui.shared.recents.view.AppTransitionAnimationSpecsFuture;
 import com.android.systemui.shared.recents.view.RecentsTransition;
+import com.android.systemui.shared.system.ActivityCompat;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
 import com.android.systemui.shared.system.ActivityOptionsCompat;
 import com.android.systemui.shared.system.WindowManagerWrapper;
@@ -115,7 +117,7 @@
         }
 
         protected abstract boolean isAvailable(BaseDraggingActivity activity);
-        protected abstract ActivityOptions makeLaunchOptions();
+        protected abstract ActivityOptions makeLaunchOptions(Activity activity);
         protected abstract boolean onActivityStarted(BaseDraggingActivity activity);
 
         @Override
@@ -160,7 +162,7 @@
 
                 dismissTaskMenuView(activity);
 
-                ActivityOptions options = makeLaunchOptions();
+                ActivityOptions options = makeLaunchOptions(activity);
                 if (options != null
                         && ActivityManagerWrapper.getInstance().startActivityFromRecents(taskId,
                                 options)) {
@@ -222,8 +224,10 @@
         }
 
         @Override
-        protected ActivityOptions makeLaunchOptions() {
-            final int navBarPosition = WindowManagerWrapper.getInstance().getNavBarPosition();
+        protected ActivityOptions makeLaunchOptions(Activity activity) {
+            final ActivityCompat act = new ActivityCompat(activity);
+            final int navBarPosition = WindowManagerWrapper.getInstance().getNavBarPosition(
+                    act.getDisplayId());
             if (navBarPosition == WindowManagerWrapper.NAV_BAR_POS_INVALID) {
                 return null;
             }
@@ -257,7 +261,7 @@
         }
 
         @Override
-        protected ActivityOptions makeLaunchOptions() {
+        protected ActivityOptions makeLaunchOptions(Activity activity) {
             return ActivityOptionsCompat.makeFreeformOptions();
         }
 
