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

Commit 6a847bba authored by Peter Liang's avatar Peter Liang Committed by PETER LIANG
Browse files

Fix that display size and text preview is going blank while scrolling the page in landscape view.

Problem:
It seems that the inconsistent index would cause the view stub couldn't be inflated successfully.

Solution:
Adjust it to the same index.

Fix: 244336110
Test: manual test
Change-Id: I2688e6feb61ac64f989e5f8e4910e6eeca3a97bf
parent 581fd171
Loading
Loading
Loading
Loading
+16 −15
Original line number Diff line number Diff line
@@ -42,6 +42,8 @@ import java.util.Objects;
class TextReadingPreviewController extends BasePreferenceController implements
        PreviewSizeSeekBarController.ProgressInteractionListener {
    private static final String TAG = "TextReadingPreviewCtrl";
    private static final int LAYER_INITIAL_INDEX = 0;
    private static final int FRAME_INITIAL_INDEX = 0;
    static final int[] PREVIEW_SAMPLE_RES_IDS = new int[]{
            R.layout.accessibility_text_reading_preview_app_grid,
            R.layout.screen_zoom_preview_1,
@@ -108,25 +110,15 @@ class TextReadingPreviewController extends BasePreferenceController implements
        final PreviewPagerAdapter pagerAdapter = new PreviewPagerAdapter(mContext, isLayoutRtl,
                PREVIEW_SAMPLE_RES_IDS, createConfig(origConfig));
        mPreviewPreference.setPreviewAdapter(pagerAdapter);
        mPreviewPreference.setCurrentItem(isLayoutRtl ? PREVIEW_SAMPLE_RES_IDS.length - 1 : 0);
        pagerAdapter.setPreviewLayer(/* newLayerIndex= */ 0,
                /* currentLayerIndex= */ 0,
                /* currentFrameIndex= */ 0, /* animate= */ false);
        mPreviewPreference.setCurrentItem(
                isLayoutRtl ? PREVIEW_SAMPLE_RES_IDS.length - 1 : FRAME_INITIAL_INDEX);
        pagerAdapter.setPreviewLayer(getPagerIndex(), LAYER_INITIAL_INDEX,
                FRAME_INITIAL_INDEX, /* animate= */ false);
    }

    @Override
    public void notifyPreferenceChanged() {
        final int displayDataSize = mDisplaySizeData.getValues().size();
        final int fontSizeProgress = mFontSizePreference.getProgress();
        final int displaySizeProgress = mDisplaySizePreference.getProgress();

        // To be consistent with the
        // {@link PreviewPagerAdapter#setPreviewLayer(int, int, int, boolean)} behavior,
        // here also needs the same design. In addition, please also refer to
        // the {@link #createConfig(Configuration)}.
        final int pagerIndex = fontSizeProgress * displayDataSize + displaySizeProgress;

        mPreviewPreference.notifyPreviewPagerChanged(pagerIndex);
        mPreviewPreference.notifyPreviewPagerChanged(getPagerIndex());
    }

    @Override
@@ -174,6 +166,15 @@ class TextReadingPreviewController extends BasePreferenceController implements
        choreographer.postFrameCallbackDelayed(mCommit, commitDelayMs);
    }

    private int getPagerIndex() {
        final int displayDataSize = mDisplaySizeData.getValues().size();

        // To be consistent with the {@link PreviewPagerAdapter#setPreviewLayer(int, int, int,
        // boolean)} behavior, here also needs the same design. In addition, please also refer to
        // the {@link #createConfig(Configuration)}.
        return mLastFontProgress * displayDataSize + mLastDisplayProgress;
    }

    private void tryCommitFontSizeConfig() {
        final int fontProgress = mFontSizePreference.getProgress();
        if (fontProgress != mLastFontProgress) {