Merge "Make sure visible View state is updated before dispatching clicks"
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user