Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a35d7687 authored by Adam Powell's avatar Adam Powell
Browse files

Make sure visible View state is updated before dispatching clicks

Change-Id: If2619ffa760be708efe8b0d2d04e17eb0dc9375e
parent b9b2f55a
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -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,9 +4331,17 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility

                            // Only perform take click actions if we were in the pressed state
                            if (!focusTaken) {
                                // 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();
                                }
                            }
                        }

                        if (mUnsetPressedState == null) {
                            mUnsetPressedState = new UnsetPressedState();
@@ -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