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

Commit ca1abaa9 authored by Noah Wang's avatar Noah Wang Committed by Android (Google) Code Review
Browse files

Merge "Fix crashing of font size settings screen due to the timing of...

Merge "Fix crashing of font size settings screen due to the timing of initialization of ExploreByTouchHelper Bug: 27674946" into nyc-dev
parents 9856531b c89855ae
Loading
Loading
Loading
Loading
+24 −2
Original line number Diff line number Diff line
@@ -139,6 +139,9 @@ public class LabeledSeekBar extends SeekBar {

    private ExploreByTouchHelper mAccessHelper;

    private boolean mOnMeasureCalled;
    private boolean mOnAttachedWindowCalled;

    public LabeledSeekBar(Context context, AttributeSet attrs) {
        this(context, attrs, com.android.internal.R.attr.seekBarStyle);
    }
@@ -204,11 +207,18 @@ public class LabeledSeekBar extends SeekBar {
        super.setOnSeekBarChangeListener(l2);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        mOnMeasureCalled = true;
        tryInitAccessHelper();
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        mAccessHelper = new LabeledSeekBarExploreByTouchHelper(this);
        ViewCompat.setAccessibilityDelegate(this, mAccessHelper);
        mOnAttachedWindowCalled = true;
        tryInitAccessHelper();
    }

    @Override
@@ -227,6 +237,18 @@ public class LabeledSeekBar extends SeekBar {
        return super.dispatchHoverEvent(event);
    }

    /**
     * Initialize accessibility delegation only when both onAttachedWindow and onMeasure
     * has been called.
     */
    private void tryInitAccessHelper() {
        if (mOnAttachedWindowCalled && mOnMeasureCalled) {
            mAccessHelper = new LabeledSeekBarExploreByTouchHelper(this);
            ViewCompat.setAccessibilityDelegate(this, mAccessHelper);
            mOnAttachedWindowCalled = mOnMeasureCalled = false;
        }
    }

    private void sendClickEventForAccessibility(int progress) {
        if (mAccessHelper != null) {
            mAccessHelper.invalidateRoot();