From 1a55d1ff37b7237fc2bbd8a848470eda5e9bbbed Mon Sep 17 00:00:00 2001 From: Steven Ng Date: Tue, 18 May 2021 17:18:07 +0100 Subject: [PATCH] Widgets: Only reset expanded item & scroll to top if the user switch tab Test: Open widgets picker, then adb install an app that has widget. Observe the newly installed app widget is shown and the widgets picker doesn't scroll itself back to top. Bug: 188425375 Change-Id: I7ac29f08b06d528ef64e902e678a67e56971c681 --- .../launcher3/widget/picker/WidgetsFullSheet.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java index e44acc363b..bfdddebcf9 100644 --- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java +++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java @@ -130,6 +130,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet private final int mTabsHeight; private final int mWidgetCellHorizontalPadding; + @Nullable private WidgetsRecyclerView mCurrentWidgetsRecyclerView; @Nullable private PersonalWorkPagedView mViewPager; private boolean mIsInSearchMode; private int mMaxSpansPerRow = 4; @@ -222,13 +223,18 @@ public class WidgetsFullSheet extends BaseWidgetSheet updateRecyclerViewVisibility(currentAdapterHolder); attachScrollbarToRecyclerView(currentRecyclerView); - resetExpandedHeaders(); } private void attachScrollbarToRecyclerView(WidgetsRecyclerView recyclerView) { recyclerView.bindFastScrollbar(); - mSearchAndRecommendationsScrollController.setCurrentRecyclerView(recyclerView); - reset(); + if (mCurrentWidgetsRecyclerView != recyclerView) { + // Only reset the scroll position & expanded apps if the currently shown recycler view + // has been updated. + reset(); + resetExpandedHeaders(); + mCurrentWidgetsRecyclerView = recyclerView; + mSearchAndRecommendationsScrollController.setCurrentRecyclerView(recyclerView); + } } private void updateRecyclerViewVisibility(AdapterHolder adapterHolder) { @@ -413,7 +419,6 @@ public class WidgetsFullSheet extends BaseWidgetSheet if (mIsInSearchMode) return; setViewVisibilityBasedOnSearch(/*isInSearchMode= */ true); attachScrollbarToRecyclerView(mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView); - resetExpandedHeaders(); } @Override