From 9dc3209913cf3bcb6b46b6481321a054667be9a3 Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Tue, 2 Sep 2014 23:34:10 +0200 Subject: [PATCH] Disable touch dispatch while adjusting brightness Prevents new pointers from being added while the shade is transparent so that nothing gets touched by accident. Bug: 17113634 Change-Id: I4a607d08dbccd467280159060846edd32db9c512 --- .../statusbar/phone/StatusBarWindowView.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java index e1fd77970e41a..1811d8d249528 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -42,6 +42,7 @@ public class StatusBarWindowView extends FrameLayout { private DragDownHelper mDragDownHelper; private NotificationStackScrollLayout mStackScrollLayout; private NotificationPanelView mNotificationPanel; + private View mBrightnessMirror; PhoneStatusBar mService; @@ -72,6 +73,7 @@ public class StatusBarWindowView extends FrameLayout { R.id.notification_stack_scroller); mNotificationPanel = (NotificationPanelView) findViewById(R.id.notification_panel); mDragDownHelper = new DragDownHelper(getContext(), this, mStackScrollLayout, mService); + mBrightnessMirror = findViewById(R.id.brightness_mirror); // We really need to be able to animate while window animations are going on // so that activities may be started asynchronously from panel animations @@ -105,6 +107,19 @@ public class StatusBarWindowView extends FrameLayout { return super.dispatchKeyEvent(event); } + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + if (mBrightnessMirror != null && mBrightnessMirror.getVisibility() == VISIBLE) { + // Disallow new pointers while the brightness mirror is visible. This is so that you + // can't touch anything other than the brightness slider while the mirror is showing + // and the rest of the panel is transparent. + if (ev.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN) { + return false; + } + } + return super.dispatchTouchEvent(ev); + } + @Override public boolean onInterceptTouchEvent(MotionEvent ev) { boolean intercept = false;