From e0c1890bdc5482a4d29aba683115a7133ab58950 Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Wed, 10 Jun 2015 17:47:12 -0700 Subject: [PATCH] Filter hover events for clipped views Fixes a bug where hovering would select a view even if the hovered part was clipped away. Bug: 21763049 Change-Id: I1bbe700cf15d467d570a16bf474e62a477e4bb51 --- .../android/systemui/statusbar/ExpandableView.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java index e12c226bec453..cf0209070abe0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java @@ -132,6 +132,14 @@ public abstract class ExpandableView extends FrameLayout { return getHeight(); } + @Override + public boolean dispatchGenericMotionEvent(MotionEvent ev) { + if (filterMotionEvent(ev)) { + return super.dispatchGenericMotionEvent(ev); + } + return false; + } + @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (filterMotionEvent(ev)) { @@ -142,6 +150,8 @@ public abstract class ExpandableView extends FrameLayout { protected boolean filterMotionEvent(MotionEvent event) { return event.getActionMasked() != MotionEvent.ACTION_DOWN + && event.getActionMasked() != MotionEvent.ACTION_HOVER_ENTER + && event.getActionMasked() != MotionEvent.ACTION_HOVER_MOVE || event.getY() > mClipTopAmount && event.getY() < mActualHeight; } @@ -343,6 +353,7 @@ public abstract class ExpandableView extends FrameLayout { public void getBoundsOnScreen(Rect outRect, boolean clipToParent) { super.getBoundsOnScreen(outRect, clipToParent); outRect.bottom = (int) (outRect.top + getActualHeight()); + outRect.top += getClipTopAmount(); } public int getContentHeight() {