diff options
author | Chih-Chung Chang <chihchung@google.com> | 2011-11-11 18:41:45 +0800 |
---|---|---|
committer | Chih-Chung Chang <chihchung@google.com> | 2011-11-11 18:52:59 +0800 |
commit | 447399928346f0f2a826423511cb241cd89db407 (patch) | |
tree | f7560419b4ae9c439b7a0eb0a307b2124ff93639 | |
parent | 98e6bf1e8609b29dcded1cd54b49d08583836555 (diff) | |
download | LegacyCamera-447399928346f0f2a826423511cb241cd89db407.zip LegacyCamera-447399928346f0f2a826423511cb241cd89db407.tar.gz LegacyCamera-447399928346f0f2a826423511cb241cd89db407.tar.bz2 |
Fix 5603781: The pressed state of close icon does not disappear.
Change-Id: Ibd52cb5febf3a139d5007b6b2dd6adcb09934f99
-rw-r--r-- | src/com/android/camera/ui/SecondLevelIndicatorControlBar.java | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/com/android/camera/ui/SecondLevelIndicatorControlBar.java b/src/com/android/camera/ui/SecondLevelIndicatorControlBar.java index bc29d88..c1b9b2f 100644 --- a/src/com/android/camera/ui/SecondLevelIndicatorControlBar.java +++ b/src/com/android/camera/ui/SecondLevelIndicatorControlBar.java @@ -106,23 +106,31 @@ public class SecondLevelIndicatorControlBar extends IndicatorControl implements if (x > width) x = width; int index = getTouchViewIndex((int) x, width); - View b = getChildAt(index); - if (b == null) return true; - dispatchRelativeTouchEvent(b, event); + + // Cancel the previous target if we moved out of it if ((mSelectedIndex != -1) && (index != mSelectedIndex)) { - View v = getChildAt(mSelectedIndex); - if (v instanceof AbstractIndicatorButton) { - AbstractIndicatorButton c = (AbstractIndicatorButton) v; - event.setAction(MotionEvent.ACTION_CANCEL); - dispatchRelativeTouchEvent(c, event); - c.dismissPopup(); - } + View p = getChildAt(mSelectedIndex); + + int oldAction = event.getAction(); + event.setAction(MotionEvent.ACTION_CANCEL); + dispatchRelativeTouchEvent(p, event); + event.setAction(oldAction); - if (action == MotionEvent.ACTION_MOVE) { - event.setAction(MotionEvent.ACTION_DOWN); - dispatchRelativeTouchEvent(b, event); + if (p instanceof AbstractIndicatorButton) { + AbstractIndicatorButton b = (AbstractIndicatorButton) p; + b.dismissPopup(); } } + + // Send event to the target + View v = getChildAt(index); + if (v == null) return true; + + // Change MOVE to DOWN if this is a new target + if (mSelectedIndex != index && action == MotionEvent.ACTION_MOVE) { + event.setAction(MotionEvent.ACTION_DOWN); + } + dispatchRelativeTouchEvent(v, event); mSelectedIndex = index; return true; } |