summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/ViewGroup.java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2012-02-27 15:23:50 -0800
committerAdam Powell <adamp@google.com>2012-02-27 16:30:19 -0800
commit035a1fcd5ea3ac0080bb74101cf2793ccb9aa689 (patch)
tree8a2207b7d1eb386b81118473b2f2f31c655779e3 /core/java/android/view/ViewGroup.java
parent41c31ef3fa1acf18f5fce3fcf1b2f5c6fd344fd6 (diff)
downloadframeworks_base-035a1fcd5ea3ac0080bb74101cf2793ccb9aa689.zip
frameworks_base-035a1fcd5ea3ac0080bb74101cf2793ccb9aa689.tar.gz
frameworks_base-035a1fcd5ea3ac0080bb74101cf2793ccb9aa689.tar.bz2
View pressed state dispatching tweaks
Bugs 6075823, 6050563 Revise pressed state dispatch logic: Only propagate pressed state to non-clickable views. This should eliminate the "double glow" problem in some list items where a clickable child button has a secondary glow along with a clickable parent. This only applies to setPressed(true) calls; setPressed(false) must propagate. Don't early-out in setPressed to support this use case. Change-Id: Ibbe2309f5030282fad8d23e4a9bc4616b3f5dc7c
Diffstat (limited to 'core/java/android/view/ViewGroup.java')
-rw-r--r--core/java/android/view/ViewGroup.java8
1 files changed, 7 insertions, 1 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 2848e88..05c2b57 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -2770,7 +2770,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
final View[] children = mChildren;
final int count = mChildrenCount;
for (int i = 0; i < count; i++) {
- children[i].setPressed(pressed);
+ final View child = children[i];
+ // Children that are clickable on their own should not
+ // show a pressed state when their parent view does.
+ // Clearing a pressed state always propagates.
+ if (!pressed || (!child.isClickable() && !child.isLongClickable())) {
+ child.setPressed(pressed);
+ }
}
}