Merge "Make sure visible View state is updated before dispatching clicks"

This commit is contained in:
Adam Powell
2010-03-12 14:58:32 -08:00
committed by Android (Google) Code Review

View File

@@ -1775,6 +1775,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility
private CheckForLongPress mPendingCheckForLongPress;
private CheckForTap mPendingCheckForTap = null;
private PerformClick mPerformClick;
private UnsetPressedState mUnsetPressedState;
@@ -4330,7 +4331,15 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility
// Only perform take click actions if we were in the pressed state
if (!focusTaken) {
performClick();
// Use a Runnable and post this rather than calling
// performClick directly. This lets other visual state
// of the view update before click actions start.
if (mPerformClick == null) {
mPerformClick = new PerformClick();
}
if (!post(mPerformClick)) {
performClick();
}
}
}
@@ -8965,6 +8974,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility
}
}
private final class PerformClick implements Runnable {
public void run() {
performClick();
}
}
/**
* Interface definition for a callback to be invoked when a key event is
* dispatched to this view. The callback will be invoked before the key