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

Commit ff0e1f52 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use a confirmedTap listener to guarantee a click. This eliminates the...

Merge "Use a confirmedTap listener to guarantee a click. This eliminates the overlapping component listener bug from the caption service."
parents ac9c597d 354bbde0
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -17,7 +17,10 @@
package com.android.systemui.volume;

import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;

import com.android.keyguard.AlphaOptimizedImageButton;
import com.android.systemui.R;
@@ -27,13 +30,33 @@ public class CaptionsToggleImageButton extends AlphaOptimizedImageButton {

    private static final int[] OPTED_OUT_STATE = new int[] { R.attr.optedOut };

    private ConfirmedTapListener mConfirmedTapListener;
    private boolean mComponentEnabled = false;
    private boolean mOptedOut = false;

    private GestureDetector mGestureDetector;
    private GestureDetector.SimpleOnGestureListener mGestureListener =
            new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            if (mConfirmedTapListener != null) {
                mConfirmedTapListener.onConfirmedTap();
                return true;
            }
            return false;
        }
    };

    public CaptionsToggleImageButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (mGestureDetector != null) mGestureDetector.onTouchEvent(event);
        return super.onTouchEvent(event);
    }

    @Override
    public int[] onCreateDrawableState(int extraSpace) {
        int[] state = super.onCreateDrawableState(extraSpace + 1);
@@ -64,4 +87,17 @@ public class CaptionsToggleImageButton extends AlphaOptimizedImageButton {
    boolean getOptedOut() {
        return this.mOptedOut;
    }

    void setOnConfirmedTapListener(ConfirmedTapListener listener, Handler handler) {
        mConfirmedTapListener = listener;

        if (mGestureDetector == null) {
            this.mGestureDetector = new GestureDetector(getContext(), mGestureListener, handler);
        }
    }

    /** Listener for confirmed taps rather than normal on click listener. */
    interface ConfirmedTapListener {
        void onConfirmedTap();
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -515,11 +515,11 @@ public class VolumeDialogImpl implements VolumeDialog,

    private void initODICaptionsH() {
        if (mODICaptionsIcon != null) {
            mODICaptionsIcon.setOnClickListener(v -> {
            mODICaptionsIcon.setOnConfirmedTapListener(() -> {
                onCaptionIconClicked();
                Events.writeEvent(mContext, Events.EVENT_ODI_CAPTIONS_CLICK);
                dismissH(DISMISS_REASON_ODI_CAPTIONS_CLICKED);
            });
            }, mHandler);
        }

        mController.getCaptionsComponentState(false);