From 447399928346f0f2a826423511cb241cd89db407 Mon Sep 17 00:00:00 2001 From: Chih-Chung Chang Date: Fri, 11 Nov 2011 18:41:45 +0800 Subject: Fix 5603781: The pressed state of close icon does not disappear. Change-Id: Ibd52cb5febf3a139d5007b6b2dd6adcb09934f99 --- .../camera/ui/SecondLevelIndicatorControlBar.java | 34 +++++++++++++--------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'src/com') 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; } -- cgit v1.1