Loading quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java +4 −0 Original line number Diff line number Diff line Loading @@ -174,6 +174,9 @@ public final class TaskbarAllAppsController { mSlideInView = (TaskbarAllAppsSlideInView) mOverlayContext.getLayoutInflater().inflate( R.layout.taskbar_all_apps_sheet, mOverlayContext.getDragLayer(), false); // Ensures All Apps gets touch events in case it is not the top floating view. Floating // views above it may not be able to intercept the touch, so All Apps should try to. mOverlayContext.getDragLayer().addTouchController(mSlideInView); mSlideInView.addOnCloseListener(() -> { mControllers.getSharedState().allAppsVisible = false; cleanUpOverlay(); Loading Loading @@ -212,6 +215,7 @@ public final class TaskbarAllAppsController { mSearchSessionController = null; } if (mOverlayContext != null) { mOverlayContext.getDragLayer().removeTouchController(mSlideInView); mOverlayContext.setSearchSessionController(null); mOverlayContext = null; } Loading quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java +3 −1 Original line number Diff line number Diff line Loading @@ -220,7 +220,9 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarOverla @Override public boolean onControllerInterceptTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { mNoIntercept = !mAppsView.shouldContainerScroll(ev); mNoIntercept = !mAppsView.shouldContainerScroll(ev) || getTopOpenViewWithType( mActivityContext, TYPE_ACCESSIBLE & ~TYPE_TASKBAR_ALL_APPS) != null; } return super.onControllerInterceptTouchEvent(ev); } Loading quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayDragLayer.java +21 −4 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.TouchController; import com.android.launcher3.views.BaseDragLayer; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; Loading Loading @@ -69,6 +70,7 @@ public class TaskbarOverlayDragLayer extends return true; } }; private final List<TouchController> mTouchControllers = new ArrayList<>(); TaskbarOverlayDragLayer(Context context) { super(context, null, 1); Loading @@ -93,10 +95,13 @@ public class TaskbarOverlayDragLayer extends @Override public void recreateControllers() { mControllers = mOnClickListeners.isEmpty() ? new TouchController[]{mActivity.getDragController()} : new TouchController[] { mActivity.getDragController(), mClickListenerTouchController}; List<TouchController> controllers = new ArrayList<>(); controllers.add(mActivity.getDragController()); controllers.addAll(mTouchControllers); if (!mOnClickListeners.isEmpty()) { controllers.add(mClickListenerTouchController); } mControllers = controllers.toArray(new TouchController[0]); } @Override Loading Loading @@ -183,6 +188,18 @@ public class TaskbarOverlayDragLayer extends }); } /** Adds a {@link TouchController} to this drag layer. */ public void addTouchController(@NonNull TouchController touchController) { mTouchControllers.add(touchController); recreateControllers(); } /** Removes a {@link TouchController} from this drag layer. */ public void removeTouchController(@NonNull TouchController touchController) { mTouchControllers.remove(touchController); recreateControllers(); } /** * Taskbar automatically stashes when opening all apps, but we don't report the insets as * changing to avoid moving the underlying app. But internally, the apps view should still Loading Loading
quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java +4 −0 Original line number Diff line number Diff line Loading @@ -174,6 +174,9 @@ public final class TaskbarAllAppsController { mSlideInView = (TaskbarAllAppsSlideInView) mOverlayContext.getLayoutInflater().inflate( R.layout.taskbar_all_apps_sheet, mOverlayContext.getDragLayer(), false); // Ensures All Apps gets touch events in case it is not the top floating view. Floating // views above it may not be able to intercept the touch, so All Apps should try to. mOverlayContext.getDragLayer().addTouchController(mSlideInView); mSlideInView.addOnCloseListener(() -> { mControllers.getSharedState().allAppsVisible = false; cleanUpOverlay(); Loading Loading @@ -212,6 +215,7 @@ public final class TaskbarAllAppsController { mSearchSessionController = null; } if (mOverlayContext != null) { mOverlayContext.getDragLayer().removeTouchController(mSlideInView); mOverlayContext.setSearchSessionController(null); mOverlayContext = null; } Loading
quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java +3 −1 Original line number Diff line number Diff line Loading @@ -220,7 +220,9 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarOverla @Override public boolean onControllerInterceptTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { mNoIntercept = !mAppsView.shouldContainerScroll(ev); mNoIntercept = !mAppsView.shouldContainerScroll(ev) || getTopOpenViewWithType( mActivityContext, TYPE_ACCESSIBLE & ~TYPE_TASKBAR_ALL_APPS) != null; } return super.onControllerInterceptTouchEvent(ev); } Loading
quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayDragLayer.java +21 −4 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.TouchController; import com.android.launcher3.views.BaseDragLayer; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; Loading Loading @@ -69,6 +70,7 @@ public class TaskbarOverlayDragLayer extends return true; } }; private final List<TouchController> mTouchControllers = new ArrayList<>(); TaskbarOverlayDragLayer(Context context) { super(context, null, 1); Loading @@ -93,10 +95,13 @@ public class TaskbarOverlayDragLayer extends @Override public void recreateControllers() { mControllers = mOnClickListeners.isEmpty() ? new TouchController[]{mActivity.getDragController()} : new TouchController[] { mActivity.getDragController(), mClickListenerTouchController}; List<TouchController> controllers = new ArrayList<>(); controllers.add(mActivity.getDragController()); controllers.addAll(mTouchControllers); if (!mOnClickListeners.isEmpty()) { controllers.add(mClickListenerTouchController); } mControllers = controllers.toArray(new TouchController[0]); } @Override Loading Loading @@ -183,6 +188,18 @@ public class TaskbarOverlayDragLayer extends }); } /** Adds a {@link TouchController} to this drag layer. */ public void addTouchController(@NonNull TouchController touchController) { mTouchControllers.add(touchController); recreateControllers(); } /** Removes a {@link TouchController} from this drag layer. */ public void removeTouchController(@NonNull TouchController touchController) { mTouchControllers.remove(touchController); recreateControllers(); } /** * Taskbar automatically stashes when opening all apps, but we don't report the insets as * changing to avoid moving the underlying app. But internally, the apps view should still Loading