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

Commit 00ebdfe8 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Filter touch events in ExpandableView.

Because the actual height is the different as the laid out one, we
need to filter the touch events here.

Change-Id: I6abd3fb0fffe275c2b83e7c48df1dd866499a28c
parent 59b5a356
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;

@@ -49,6 +50,19 @@ public abstract class ExpandableView extends FrameLayout {
        mActualHeightInitialized = true;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (filterMotionEvent(ev)) {
            return super.dispatchTouchEvent(ev);
        }
        return false;
    }

    private boolean filterMotionEvent(MotionEvent event) {
        return event.getActionMasked() != MotionEvent.ACTION_DOWN
                || event.getY() > mClipTopAmount && event.getY() < mActualHeight;
    }

    /**
     * Sets the actual height of this notification. This is different than the laid out
     * {@link View#getHeight()}, as we want to avoid layouting during scrolling and expanding.