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

Commit 3c242c3d authored by Kirill Grouchnikov's avatar Kirill Grouchnikov
Browse files

Don't double-invoke scroll ended listener in animate*

Bug: 29754254
Change-Id: I8e7a997f93c83ddee4e923ca3990c4a8d9732c63
parent 4f5beed6
Loading
Loading
Loading
Loading
+16 −17
Original line number Diff line number Diff line
@@ -22,8 +22,6 @@ import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.MotionEvent;
@@ -475,19 +473,19 @@ public class SlidingDrawer extends ViewGroup {
                                playSoundEffect(SoundEffectConstants.CLICK);

                                if (mExpanded) {
                                    animateClose(vertical ? top : left);
                                    animateClose(vertical ? top : left, true);
                                } else {
                                    animateOpen(vertical ? top : left);
                                    animateOpen(vertical ? top : left, true);
                                }
                            } else {
                                performFling(vertical ? top : left, velocity, false);
                                performFling(vertical ? top : left, velocity, false, true);
                            }

                        } else {
                            performFling(vertical ? top : left, velocity, false);
                            performFling(vertical ? top : left, velocity, false, true);
                        }
                    } else {
                        performFling(vertical ? top : left, velocity, false);
                        performFling(vertical ? top : left, velocity, false, true);
                    }
                }
                break;
@@ -497,17 +495,18 @@ public class SlidingDrawer extends ViewGroup {
        return mTracking || mAnimating || super.onTouchEvent(event);
    }

    private void animateClose(int position) {
    private void animateClose(int position, boolean notifyScrollListener) {
        prepareTracking(position);
        performFling(position, mMaximumAcceleration, true);
        performFling(position, mMaximumAcceleration, true, notifyScrollListener);
    }

    private void animateOpen(int position) {
    private void animateOpen(int position, boolean notifyScrollListener) {
        prepareTracking(position);
        performFling(position, -mMaximumAcceleration, true);
        performFling(position, -mMaximumAcceleration, true, notifyScrollListener);
    }

    private void performFling(int position, float velocity, boolean always) {
    private void performFling(int position, float velocity, boolean always,
            boolean notifyScrollListener) {
        mAnimationPosition = position;
        mAnimatedVelocity = velocity;

@@ -553,7 +552,7 @@ public class SlidingDrawer extends ViewGroup {
        mAnimating = true;
        removeCallbacks(mSlidingRunnable);
        postDelayed(mSlidingRunnable, ANIMATION_FRAME_DURATION);
        stopTracking();
        stopTracking(notifyScrollListener);
    }

    private void prepareTracking(int position) {
@@ -681,11 +680,11 @@ public class SlidingDrawer extends ViewGroup {
        content.setVisibility(View.GONE);        
    }

    private void stopTracking() {
    private void stopTracking(boolean notifyScrollListener) {
        mHandle.setPressed(false);
        mTracking = false;

        if (mOnDrawerScrollListener != null) {
        if (notifyScrollListener && mOnDrawerScrollListener != null) {
            mOnDrawerScrollListener.onScrollEnded();
        }

@@ -802,7 +801,7 @@ public class SlidingDrawer extends ViewGroup {
        if (scrollListener != null) {
            scrollListener.onScrollStarted();
        }
        animateClose(mVertical ? mHandle.getTop() : mHandle.getLeft());
        animateClose(mVertical ? mHandle.getTop() : mHandle.getLeft(), false);

        if (scrollListener != null) {
            scrollListener.onScrollEnded();
@@ -824,7 +823,7 @@ public class SlidingDrawer extends ViewGroup {
        if (scrollListener != null) {
            scrollListener.onScrollStarted();
        }
        animateOpen(mVertical ? mHandle.getTop() : mHandle.getLeft());
        animateOpen(mVertical ? mHandle.getTop() : mHandle.getLeft(), false);

        sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);