diff --git a/quickstep/src/com/android/launcher3/uioverrides/IgnoreTouchesInQuickScrub.java b/quickstep/src/com/android/launcher3/uioverrides/IgnoreTouchesInQuickScrub.java
index 92aa1fd..2d5eb5a 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/IgnoreTouchesInQuickScrub.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/IgnoreTouchesInQuickScrub.java
@@ -18,20 +18,15 @@
 
 import android.view.MotionEvent;
 
-import com.android.launcher3.Launcher;
 import com.android.launcher3.util.TouchController;
-import com.android.quickstep.QuickScrubController;
-import com.android.quickstep.RecentsView;
+import com.android.quickstep.TouchInteractionService;
 
 /**
  * Consumes touches when quick scrub is enabled.
  */
 public class IgnoreTouchesInQuickScrub implements TouchController {
 
-    private QuickScrubController mQuickScrubController;
-
-    public IgnoreTouchesInQuickScrub(Launcher l) {
-        mQuickScrubController = ((RecentsView) l.getOverviewPanel()).getQuickScrubController();
+    public IgnoreTouchesInQuickScrub() {
     }
 
     @Override
@@ -41,6 +36,6 @@
 
     @Override
     public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
-        return mQuickScrubController.isQuickScrubEnabled();
+        return TouchInteractionService.isQuickScrubEnabled();
     }
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
index a05304b..24adf24 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
@@ -43,13 +43,13 @@
     public static TouchController[] createTouchControllers(Launcher launcher) {
         if (FeatureFlags.ENABLE_TWO_SWIPE_TARGETS) {
             return new TouchController[] {
-                    new IgnoreTouchesInQuickScrub(launcher),
+                    new IgnoreTouchesInQuickScrub(),
                     new EdgeSwipeController(launcher),
                     new TwoStepSwipeController(launcher),
                     new OverviewSwipeController(launcher)};
         } else {
             return new TouchController[] {
-                    new IgnoreTouchesInQuickScrub(launcher),
+                    new IgnoreTouchesInQuickScrub(),
                     new TwoStepSwipeController(launcher),
                     new OverviewSwipeController(launcher)};
         }
diff --git a/quickstep/src/com/android/quickstep/QuickScrubController.java b/quickstep/src/com/android/quickstep/QuickScrubController.java
index d656f8a..3e65ffe 100644
--- a/quickstep/src/com/android/quickstep/QuickScrubController.java
+++ b/quickstep/src/com/android/quickstep/QuickScrubController.java
@@ -40,7 +40,6 @@
 
     private int mQuickScrubSection;
     private int mStartPage;
-    private boolean mQuickScrubEnabled;
 
     public QuickScrubController(Launcher launcher) {
         mLauncher = launcher;
@@ -52,13 +51,11 @@
         mRecentsView = mLauncher.getOverviewPanel();
         mStartPage = startingFromHome ? 0 : mRecentsView.getFirstTaskIndex();
         mQuickScrubSection = 0;
-        mQuickScrubEnabled = true;
     }
 
     public void onQuickScrubEnd() {
         mAutoAdvanceAlarm.cancelAlarm();
         if (mRecentsView == null) {
-            mQuickScrubEnabled = false;
         } else {
             int page = mRecentsView.getNextPage();
             // Settle on the page then launch it.
@@ -71,15 +68,10 @@
                 } else {
                     ((TaskView) mRecentsView.getPageAt(page)).launchTask(true);
                 }
-                mQuickScrubEnabled = false;
             }, snapDuration);
         }
     }
 
-    public boolean isQuickScrubEnabled() {
-        return mQuickScrubEnabled;
-    }
-
     public void onQuickScrubProgress(float progress) {
         int quickScrubSection = Math.round(progress * NUM_QUICK_SCRUB_SECTIONS);
         if (quickScrubSection != mQuickScrubSection) {
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index c35ffee..06ed484 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -104,6 +104,7 @@
         @Override
         public void onQuickScrubStart() {
             startTouchTracking(INTERACTION_QUICK_SCRUB);
+            sQuickScrubEnabled = true;
         }
 
         @Override
@@ -111,6 +112,7 @@
             if (mInteractionHandler != null) {
                 mInteractionHandler.onQuickScrubEnd();
             }
+            sQuickScrubEnabled = false;
         }
 
         @Override
@@ -126,11 +128,16 @@
     private final Consumer<MotionEvent> mNoOpTouchConsumer = (ev) -> {};
 
     private static boolean sConnected = false;
+    private static boolean sQuickScrubEnabled = false;
 
     public static boolean isConnected() {
         return sConnected;
     }
 
+    public static boolean isQuickScrubEnabled() {
+        return sQuickScrubEnabled;
+    }
+
     private ActivityManagerWrapper mAM;
     private RunningTaskInfo mRunningTask;
     private RecentsModel mRecentsModel;
