summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChih-Chung Chang <chihchung@google.com>2011-11-11 18:41:45 +0800
committerChih-Chung Chang <chihchung@google.com>2011-11-11 18:52:59 +0800
commit447399928346f0f2a826423511cb241cd89db407 (patch)
treef7560419b4ae9c439b7a0eb0a307b2124ff93639
parent98e6bf1e8609b29dcded1cd54b49d08583836555 (diff)
downloadLegacyCamera-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.java34
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;
}