Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c4edd55 authored by Jason Chiu's avatar Jason Chiu Committed by Automerger Merge Worker
Browse files

Merge "Prevent scrolling after the homepage recreating" into tm-dev am: 1c8e0743

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/17148787

Change-Id: I90043af7b684b956881f9fa8fd84ba1e920f5050
parents a01efc55 1c8e0743
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -182,6 +182,8 @@ public class SettingsHomepageActivity extends FragmentActivity implements
            showSuggestionFragment(scrollNeeded);
            if (FeatureFlagUtils.isEnabled(this, FeatureFlags.CONTEXTUAL_HOME)) {
                showFragment(() -> new ContextualCardsFragment(), R.id.contextual_cards_content);
                ((FrameLayout) findViewById(R.id.main_content))
                        .getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
            }
        }
        mMainFragment = showFragment(() -> {
@@ -191,9 +193,6 @@ public class SettingsHomepageActivity extends FragmentActivity implements
            return fragment;
        }, R.id.main_content);

        ((FrameLayout) findViewById(R.id.main_content))
                .getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);

        // Launch the intent from deep link for large screen devices.
        launchDeepLinkIntentToRight();
    }
+16 −5
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Log;

import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;

@@ -43,14 +42,17 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
    private String mHiddenKey;
    private DialogInterface mDialog;
    private HighlightableTopLevelPreferenceAdapter mTopLevelAdapter;
    private boolean mActivityEmbedded;

    public TopLevelHighlightMixin() {
    public TopLevelHighlightMixin(boolean activityEmbedded) {
        mActivityEmbedded = activityEmbedded;
    }

    public TopLevelHighlightMixin(Parcel source) {
        mCurrentKey = source.readString();
        mPreviousKey = source.readString();
        mHiddenKey = source.readString();
        mActivityEmbedded = source.readBoolean();
    }

    @Override
@@ -58,6 +60,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
        dest.writeString(mCurrentKey);
        dest.writeString(mPreviousKey);
        dest.writeString(mHiddenKey);
        dest.writeBoolean(mActivityEmbedded);
    }

    @Override
@@ -96,8 +99,16 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
        }
    }

    void setActivityEmbedded(boolean activityEmbedded) {
        mActivityEmbedded = activityEmbedded;
    }

    boolean isActivityEmbedded() {
        return mActivityEmbedded;
    }

    RecyclerView.Adapter onCreateAdapter(TopLevelSettings topLevelSettings,
            PreferenceScreen preferenceScreen) {
            PreferenceScreen preferenceScreen, boolean scrollNeeded) {
        if (TextUtils.isEmpty(mCurrentKey)) {
            mCurrentKey = getHighlightPrefKeyFromArguments(topLevelSettings.getArguments());
        }
@@ -105,7 +116,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
        Log.d(TAG, "onCreateAdapter, pref key: " + mCurrentKey);
        mTopLevelAdapter = new HighlightableTopLevelPreferenceAdapter(
                (SettingsHomepageActivity) topLevelSettings.getActivity(), preferenceScreen,
                topLevelSettings.getListView(), mCurrentKey);
                topLevelSettings.getListView(), mCurrentKey, scrollNeeded);
        return mTopLevelAdapter;
    }

@@ -129,7 +140,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
        }
    }

    void highlightPreferenceIfNeeded(FragmentActivity activity) {
    void highlightPreferenceIfNeeded() {
        if (mTopLevelAdapter != null) {
            mTopLevelAdapter.requestHighlight();
        }
+7 −3
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ public class TopLevelSettings extends DashboardFragment implements

    private boolean mIsEmbeddingActivityEnabled;
    private TopLevelHighlightMixin mHighlightMixin;
    private boolean mScrollNeeded = true;
    private boolean mFirstStarted = true;

    public TopLevelSettings() {
@@ -133,11 +134,14 @@ public class TopLevelSettings extends DashboardFragment implements
            return;
        }

        boolean activityEmbedded = SplitController.getInstance().isActivityEmbedded(getActivity());
        if (icicle != null) {
            mHighlightMixin = icicle.getParcelable(SAVED_HIGHLIGHT_MIXIN);
            mScrollNeeded = !mHighlightMixin.isActivityEmbedded() && activityEmbedded;
            mHighlightMixin.setActivityEmbedded(activityEmbedded);
        }
        if (mHighlightMixin == null) {
            mHighlightMixin = new TopLevelHighlightMixin();
            mHighlightMixin = new TopLevelHighlightMixin(activityEmbedded);
        }
    }

@@ -201,7 +205,7 @@ public class TopLevelSettings extends DashboardFragment implements
    @Override
    public void highlightPreferenceIfNeeded() {
        if (mHighlightMixin != null) {
            mHighlightMixin.highlightPreferenceIfNeeded(getActivity());
            mHighlightMixin.highlightPreferenceIfNeeded();
        }
    }

@@ -243,7 +247,7 @@ public class TopLevelSettings extends DashboardFragment implements
        if (!mIsEmbeddingActivityEnabled || !(getActivity() instanceof SettingsHomepageActivity)) {
            return super.onCreateAdapter(preferenceScreen);
        }
        return mHighlightMixin.onCreateAdapter(this, preferenceScreen);
        return mHighlightMixin.onCreateAdapter(this, preferenceScreen, mScrollNeeded);
    }

    @Override
+3 −1
Original line number Diff line number Diff line
@@ -67,10 +67,12 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt
    private SparseArray<PreferenceViewHolder> mViewHolders;

    public HighlightableTopLevelPreferenceAdapter(SettingsHomepageActivity homepageActivity,
            PreferenceGroup preferenceGroup, RecyclerView recyclerView, String key) {
            PreferenceGroup preferenceGroup, RecyclerView recyclerView, String key,
            boolean scrollNeeded) {
        super(preferenceGroup);
        mRecyclerView = recyclerView;
        mHighlightKey = key;
        mScrolled = !scrollNeeded;
        mViewHolders = new SparseArray<>();
        mContext = preferenceGroup.getContext();
        mHomepageActivity = homepageActivity;