diff options
author | Selim Cinek <cinek@google.com> | 2014-09-25 13:55:01 +0200 |
---|---|---|
committer | Selim Cinek <cinek@google.com> | 2014-09-29 12:21:48 +0000 |
commit | 311fc0b399f01a79169ae69aea05556043a7d7df (patch) | |
tree | a129053b16a4aa56f39d2ff622406c109dfa7f52 /packages/SystemUI | |
parent | 89e0f0937a70d73b5ed188c9337b4d33860e5573 (diff) | |
download | frameworks_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.java | 18 |
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); |