From f54c6fa4b4ca481e81ec2e137f6e3c5dc91d57d7 Mon Sep 17 00:00:00 2001 From: Brian Isganitis Date: Tue, 11 Jul 2023 12:47:08 -0400 Subject: [PATCH] Revert "Revert "Provide AllApps item OnLongClickListener through ActivityContext."" This reverts commit 853a5b9e0ccb9470efe7a025d75c6dfdfaac124c. Fixes SecondaryDisplayLauncher class by using lambda instead of method reference for #getAllAppsItemLongClickListener. This change is necessary because mDragLayer is late-init. Test: Home Settings > Developer Options > Launch Secondary Display Bug: 289261756 Flag: No Change-Id: I7b83f81651dde360edea6ee7bea6cc82441e6bef --- .../appprediction/PredictionRowView.java | 13 +------------ .../SecondaryDisplayPredictionsImpl.java | 10 ---------- .../allapps/TaskbarAllAppsViewController.java | 11 ----------- .../taskbar/overlay/TaskbarOverlayContext.java | 5 +++++ src/com/android/launcher3/Launcher.java | 6 ++++++ .../allapps/ActivityAllAppsContainerView.java | 9 --------- .../launcher3/allapps/BaseAllAppsAdapter.java | 15 ++------------- .../SecondaryDisplayLauncher.java | 11 ++++++----- .../SecondaryDisplayPredictions.java | 10 ---------- .../secondarydisplay/SecondaryDragLayer.java | 5 +---- .../android/launcher3/views/ActivityContext.java | 5 +++++ 11 files changed, 26 insertions(+), 74 deletions(-) diff --git a/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java b/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java index 023486fa04..4f889c05bc 100644 --- a/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java +++ b/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java @@ -43,7 +43,6 @@ import com.android.launcher3.keyboard.FocusIndicatorHelper.SimpleFocusIndicatorH import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.ItemInfoWithIcon; import com.android.launcher3.model.data.WorkspaceItemInfo; -import com.android.launcher3.touch.ItemLongClickListener; import com.android.launcher3.views.ActivityContext; import java.util.ArrayList; @@ -66,7 +65,6 @@ public class PredictionRowView private FloatingHeaderView mParent; private boolean mPredictionsEnabled = false; - private OnLongClickListener mOnIconLongClickListener = ItemLongClickListener.INSTANCE_ALL_APPS; public PredictionRowView(@NonNull Context context) { this(context, null); @@ -176,15 +174,6 @@ public class PredictionRowView applyPredictionApps(); } - /** - * Sets the long click listener for predictions for any future predictions. - * - * Existing predictions in the container are not updated with this new callback. - */ - public void setOnIconLongClickListener(OnLongClickListener onIconLongClickListener) { - mOnIconLongClickListener = onIconLongClickListener; - } - @Override public void onDeviceProfileChanged(DeviceProfile dp) { mNumPredictedAppsPerRow = dp.numShownAllAppsColumns; @@ -202,7 +191,7 @@ public class PredictionRowView BubbleTextView icon = (BubbleTextView) inflater.inflate( R.layout.all_apps_icon, this, false); icon.setOnClickListener(mActivityContext.getItemOnClickListener()); - icon.setOnLongClickListener(mOnIconLongClickListener); + icon.setOnLongClickListener(mActivityContext.getAllAppsItemLongClickListener()); icon.setLongPressTimeoutFactor(1f); icon.setOnFocusChangeListener(mFocusHelper); diff --git a/quickstep/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictionsImpl.java b/quickstep/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictionsImpl.java index 8720bd8f26..b982688ce7 100644 --- a/quickstep/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictionsImpl.java +++ b/quickstep/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictionsImpl.java @@ -18,9 +18,7 @@ package com.android.launcher3.secondarydisplay; import static com.android.launcher3.util.OnboardingPrefs.ALL_APPS_VISITED_COUNT; import android.content.Context; -import android.view.View; -import com.android.launcher3.allapps.ActivityAllAppsContainerView; import com.android.launcher3.appprediction.AppsDividerView; import com.android.launcher3.appprediction.PredictionRowView; import com.android.launcher3.model.BgDataModel; @@ -56,12 +54,4 @@ public final class SecondaryDisplayPredictionsImpl extends SecondaryDisplayPredi .findFixedRowByType(PredictionRowView.class) .setPredictedApps(item.items); } - - @Override - public void setLongClickListener(ActivityAllAppsContainerView appsView, - View.OnLongClickListener onIconLongClickListener) { - appsView.getFloatingHeaderView() - .findFixedRowByType(PredictionRowView.class) - .setOnIconLongClickListener(onIconLongClickListener); - } } diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java index 01342affb6..a851734341 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java @@ -20,7 +20,6 @@ import static com.android.launcher3.util.OnboardingPrefs.ALL_APPS_VISITED_COUNT; import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.appprediction.AppsDividerView; -import com.android.launcher3.appprediction.PredictionRowView; import com.android.launcher3.taskbar.NavbarButtonsViewController; import com.android.launcher3.taskbar.TaskbarControllers; import com.android.launcher3.taskbar.TaskbarStashController; @@ -54,7 +53,6 @@ final class TaskbarAllAppsViewController { mOverlayController = taskbarControllers.taskbarOverlayController; mSlideInView.init(new TaskbarAllAppsCallbacks()); - setUpIconLongClick(); setUpAppDivider(); setUpTaskbarStashing(); } @@ -69,15 +67,6 @@ final class TaskbarAllAppsViewController { mSlideInView.close(animate); } - private void setUpIconLongClick() { - mAppsView.setOnIconLongClickListener( - mContext.getDragController()::startDragOnLongClick); - mAppsView.getFloatingHeaderView() - .findFixedRowByType(PredictionRowView.class) - .setOnIconLongClickListener( - mContext.getDragController()::startDragOnLongClick); - } - private void setUpAppDivider() { mAppsView.getFloatingHeaderView() .findFixedRowByType(AppsDividerView.class) diff --git a/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java index cfcc1a070b..64cc47c739 100644 --- a/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java @@ -125,6 +125,11 @@ public class TaskbarOverlayContext extends BaseTaskbarContext { return mTaskbarContext.getItemOnClickListener(); } + @Override + public View.OnLongClickListener getAllAppsItemLongClickListener() { + return mDragController::startDragOnLongClick; + } + @Override public PopupDataProvider getPopupDataProvider() { return mTaskbarContext.getPopupDataProvider(); diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 66c76ca597..849db28e20 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -194,6 +194,7 @@ import com.android.launcher3.states.RotationHelper; import com.android.launcher3.testing.TestLogging; import com.android.launcher3.testing.shared.TestProtocol; import com.android.launcher3.touch.AllAppsSwipeController; +import com.android.launcher3.touch.ItemLongClickListener; import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper; import com.android.launcher3.util.ActivityResultInfo; import com.android.launcher3.util.ActivityTracker; @@ -3372,4 +3373,9 @@ public class Launcher extends StatefulActivity public boolean areFreeformTasksVisible() { return false; // Base launcher does not track freeform tasks } + + @Override + public View.OnLongClickListener getAllAppsItemLongClickListener() { + return ItemLongClickListener.INSTANCE_ALL_APPS; + } } diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java index 9dc82bdd98..da1bcd7fcc 100644 --- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java @@ -892,15 +892,6 @@ public class ActivityAllAppsContainerView container.put(R.id.work_tab_state_id, state); } - /** - * Sets the long click listener for icons - */ - public void setOnIconLongClickListener(OnLongClickListener listener) { - for (AdapterHolder holder : mAH) { - holder.mAdapter.setOnIconLongClickListener(listener); - } - } - public AllAppsStore getAppsStore() { return mAllAppsStore; } diff --git a/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java b/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java index 72a01958fd..be0a898531 100644 --- a/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java +++ b/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java @@ -15,10 +15,7 @@ */ package com.android.launcher3.allapps; -import static com.android.launcher3.touch.ItemLongClickListener.INSTANCE_ALL_APPS; - import android.content.Context; -import android.content.res.Resources; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -27,7 +24,6 @@ import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; import com.android.launcher3.BubbleTextView; @@ -139,31 +135,24 @@ public abstract class BaseAllAppsAdapter ex protected final LayoutInflater mLayoutInflater; protected final OnClickListener mOnIconClickListener; - protected OnLongClickListener mOnIconLongClickListener = INSTANCE_ALL_APPS; + protected final OnLongClickListener mOnIconLongClickListener; protected OnFocusChangeListener mIconFocusListener; private final int mExtraTextHeight; public BaseAllAppsAdapter(T activityContext, LayoutInflater inflater, AlphabeticalAppsList apps, SearchAdapterProvider adapterProvider) { - Resources res = activityContext.getResources(); mActivityContext = activityContext; mApps = apps; mLayoutInflater = inflater; mOnIconClickListener = mActivityContext.getItemOnClickListener(); + mOnIconLongClickListener = mActivityContext.getAllAppsItemLongClickListener(); mAdapterProvider = adapterProvider; mExtraTextHeight = Utilities.calculateTextHeight( mActivityContext.getDeviceProfile().allAppsIconTextSizePx); } - /** - * Sets the long click listener for icons - */ - public void setOnIconLongClickListener(@Nullable OnLongClickListener listener) { - mOnIconLongClickListener = listener; - } - /** Checks if the passed viewType represents all apps divider. */ public static boolean isDividerViewType(int viewType) { return isViewType(viewType, VIEW_TYPE_MASK_DIVIDER); diff --git a/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java b/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java index 458f137949..e4f6fe1b75 100644 --- a/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java +++ b/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java @@ -72,7 +72,7 @@ public class SecondaryDisplayLauncher extends BaseDraggingActivity implements BgDataModel.Callbacks, DragController.DragListener { private LauncherModel mModel; - private BaseDragLayer mDragLayer; + private SecondaryDragLayer mDragLayer; private SecondaryDragController mDragController; private ActivityAllAppsContainerView mAppsView; private View mAppsButton; @@ -314,10 +314,6 @@ public class SecondaryDisplayLauncher extends BaseDraggingActivity } } - public SecondaryDisplayPredictions getSecondaryDisplayPredictions() { - return mSecondaryDisplayPredictions; - } - @Override public StringCache getStringCache() { return mStringCache; @@ -337,6 +333,11 @@ public class SecondaryDisplayLauncher extends BaseDraggingActivity return this::onIconClicked; } + @Override + public View.OnLongClickListener getAllAppsItemLongClickListener() { + return v -> mDragLayer.onIconLongClicked(v); + } + private void onIconClicked(View v) { // Make sure that rogue clicks don't get through while allapps is launching, or after the // view has detached (it's possible for this to happen if the view is removed mid touch). diff --git a/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictions.java b/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictions.java index 21c50d38e8..a58916ad80 100644 --- a/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictions.java +++ b/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictions.java @@ -16,10 +16,8 @@ package com.android.launcher3.secondarydisplay; import android.content.Context; -import android.view.View; import com.android.launcher3.R; -import com.android.launcher3.allapps.ActivityAllAppsContainerView; import com.android.launcher3.model.BgDataModel; import com.android.launcher3.util.ResourceBasedOverride; @@ -47,12 +45,4 @@ public class SecondaryDisplayPredictions implements ResourceBasedOverride { */ public void setPredictedApps(BgDataModel.FixedContainerItems item) { } - - /** - * Set long click listener for predicted apps in top of app drawer. - */ - public void setLongClickListener( - ActivityAllAppsContainerView appsView, - View.OnLongClickListener onIconLongClickListener) { - } } diff --git a/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java b/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java index 87afcabdf8..717164e0ed 100644 --- a/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java +++ b/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java @@ -79,9 +79,6 @@ public class SecondaryDragLayer extends BaseDragLayer mAllAppsButton = findViewById(R.id.all_apps_button); mAppsView = findViewById(R.id.apps_view); - mAppsView.setOnIconLongClickListener(this::onIconLongClicked); - mActivity.getSecondaryDisplayPredictions() - .setLongClickListener(mAppsView, this::onIconLongClicked); // Setup workspace mWorkspace = findViewById(R.id.workspace_grid); mPinnedAppsAdapter = new PinnedAppsAdapter(mActivity, mAppsView.getAppsStore(), @@ -179,7 +176,7 @@ public class SecondaryDragLayer extends BaseDragLayer return mPinnedAppsAdapter; } - private boolean onIconLongClicked(View v) { + boolean onIconLongClicked(View v) { if (!(v instanceof BubbleTextView)) { return false; } diff --git a/src/com/android/launcher3/views/ActivityContext.java b/src/com/android/launcher3/views/ActivityContext.java index d04f5e2d30..84ea87118c 100644 --- a/src/com/android/launcher3/views/ActivityContext.java +++ b/src/com/android/launcher3/views/ActivityContext.java @@ -239,6 +239,11 @@ public interface ActivityContext { }; } + /** Long-click callback used for All Apps items. */ + default View.OnLongClickListener getAllAppsItemLongClickListener() { + return v -> false; + } + @Nullable default PopupDataProvider getPopupDataProvider() { return null;