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

Commit 6a13dd55 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Accessibility hover events are fired if hover otside of modal window."

parents 6c79bcf3 4c1c101a
Loading
Loading
Loading
Loading
+20 −14
Original line number Diff line number Diff line
@@ -6052,23 +6052,29 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
     * @see #onHoverChanged
     */
    public boolean onHoverEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_HOVER_ENTER:
                if (!hasHoveredChild() && !mSendingHoverAccessibilityEvents) {
        // The root view may receive hover (or touch) events that are outside the bounds of
        // the window.  This code ensures that we only send accessibility events for
        // hovers that are actually within the bounds of the root view.
        final int action = event.getAction();
        if (!mSendingHoverAccessibilityEvents) {
            if ((action == MotionEvent.ACTION_HOVER_ENTER
                    || action == MotionEvent.ACTION_HOVER_MOVE)
                    && !hasHoveredChild()
                    && pointInView(event.getX(), event.getY())) {
                mSendingHoverAccessibilityEvents = true;
                sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_HOVER_ENTER);
            }
                break;
            case MotionEvent.ACTION_HOVER_EXIT:
                if (mSendingHoverAccessibilityEvents) {
        } else {
            if (action == MotionEvent.ACTION_HOVER_EXIT
                    || (action == MotionEvent.ACTION_HOVER_MOVE
                            && !pointInView(event.getX(), event.getY()))) {
                mSendingHoverAccessibilityEvents = false;
                sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_HOVER_EXIT);
            }
                break;
        }
        if (isHoverable()) {
            switch (event.getAction()) {
            switch (action) {
                case MotionEvent.ACTION_HOVER_ENTER:
                    setHovered(true);
                    break;