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

Commit 21f16a47 authored by Wale Ogunwale's avatar Wale Ogunwale Committed by Android Git Automerger
Browse files

am 28d3c245: Merge "Cancel or drop key events if activity is stopped." into lmp-mr1-dev

* commit '28d3c245':
  Cancel or drop key events if activity is stopped.
parents 84c803f8 28d3c245
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -195,6 +195,13 @@ public abstract class InputEvent implements Parcelable {
     */
    public abstract long getEventTimeNano();

    /**
     * Marks the input event as being canceled.
     *
     * @hide
     */
    public abstract void cancel();

    /**
     * Gets the unique sequence number of this event.
     * Every input event that is created or received by a process has a
+10 −0
Original line number Diff line number Diff line
@@ -2303,6 +2303,16 @@ public class KeyEvent extends InputEvent implements Parcelable {
        return (mFlags&FLAG_CANCELED) != 0;
    }

    /**
     * Set {@link #FLAG_CANCELED} flag for the key event.
     *
     * @hide
     */
    @Override
    public final void cancel() {
        mFlags |= FLAG_CANCELED;
    }

    /**
     * Call this during {@link Callback#onKeyDown} to have the system track
     * the key through its final up (possibly including a long press).  Note
+6 −0
Original line number Diff line number Diff line
@@ -3168,6 +3168,12 @@ public final class MotionEvent extends InputEvent implements Parcelable {
        return ev;
    }

    /** @hide */
    @Override
    public final void cancel() {
        setAction(ACTION_CANCEL);
    }

    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(PARCEL_TOKEN_MOTION_EVENT);
        nativeWriteToParcel(mNativePtr, out);
+13 −6
Original line number Diff line number Diff line
@@ -3596,12 +3596,19 @@ public final class ViewRootImpl implements ViewParent,
            if (mView == null || !mAdded) {
                Slog.w(TAG, "Dropping event due to root view being removed: " + q.mEvent);
                return true;
            } else if (!mAttachInfo.mHasWindowFocus &&
                  !q.mEvent.isFromSource(InputDevice.SOURCE_CLASS_POINTER) &&
                  !isTerminalInputEvent(q.mEvent)) {
                // If this is a focused event and the window doesn't currently have input focus,
                // then drop this event.  This could be an event that came back from the previous
                // stage but the window has lost focus in the meantime.
            } else if ((!mAttachInfo.mHasWindowFocus || mStopped)
                    && !q.mEvent.isFromSource(InputDevice.SOURCE_CLASS_POINTER)) {
                // This is a focus event and the window doesn't currently have input focus or
                // has stopped. This could be an event that came back from the previous stage
                // but the window has lost focus or stopped in the meantime.
                if (isTerminalInputEvent(q.mEvent)) {
                    // Don't drop terminal input events, however mark them as canceled.
                    q.mEvent.cancel();
                    Slog.w(TAG, "Cancelling event due to no window focus: " + q.mEvent);
                    return false;
                }

                // Drop non-terminal input events.
                Slog.w(TAG, "Dropping event due to no window focus: " + q.mEvent);
                return true;
            }