summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI
diff options
context:
space:
mode:
authorSelim Cinek <cinek@google.com>2014-09-25 13:55:01 +0200
committerSelim Cinek <cinek@google.com>2014-09-29 12:21:48 +0000
commit311fc0b399f01a79169ae69aea05556043a7d7df (patch)
treea129053b16a4aa56f39d2ff622406c109dfa7f52 /packages/SystemUI
parent89e0f0937a70d73b5ed188c9337b4d33860e5573 (diff)
downloadframeworks_base-311fc0b399f01a79169ae69aea05556043a7d7df.zip
frameworks_base-311fc0b399f01a79169ae69aea05556043a7d7df.tar.gz
frameworks_base-311fc0b399f01a79169ae69aea05556043a7d7df.tar.bz2
Fixed a crash that could occur in the ObservableScrollView
Bug: 17644848 Change-Id: I771c27f9fee8c0d5edfbd21998ea015fd1d6f685
Diffstat (limited to 'packages/SystemUI')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ObservableScrollView.java18
1 files changed, 15 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ObservableScrollView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ObservableScrollView.java
index b842a6b..1186a33 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ObservableScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ObservableScrollView.java
@@ -34,6 +34,7 @@ public class ObservableScrollView extends ScrollView {
private float mLastX;
private float mLastY;
private boolean mBlockFlinging;
+ private boolean mTouchCancelled;
public ObservableScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -87,9 +88,20 @@ public class ObservableScrollView extends ScrollView {
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
- boolean isEndGuesture = (ev.getAction() == MotionEvent.ACTION_UP
- || ev.getAction() == MotionEvent.ACTION_CANCEL);
- if (!mTouchEnabled && !isEndGuesture) {
+ if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+ if (!mTouchEnabled) {
+ mTouchCancelled = true;
+ return false;
+ }
+ mTouchCancelled = false;
+ } else if (mTouchCancelled) {
+ return false;
+ } else if (!mTouchEnabled) {
+ MotionEvent cancel = MotionEvent.obtain(ev);
+ cancel.setAction(MotionEvent.ACTION_CANCEL);
+ super.dispatchTouchEvent(ev);
+ cancel.recycle();
+ mTouchCancelled = true;
return false;
}
return super.dispatchTouchEvent(ev);