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

Commit 0683fe79 authored by Tiger Huang's avatar Tiger Huang
Browse files

Refine onPointerDownOutsideFocus

The original logic would send onPointerDownOutsideFocus to WindowManager
if a non-focused window is getting touched. And then, WindowManager will
move the display to the top. However, when per-display focus is enabled,
touching on a non-top focused window won't make the display to be moved
to the top. This makes the window cannot receive display-unspecified key
events, and also break some CTS.

This CL would send onPointerDownOutsideFocus if a window is getting
touched, as long as it is not the focused window on the focused display.

Fix: 134157810
Fix: 133323637
Test: atest ActivityLifecycleTopResumedStateTests WindowFocusTests
Change-Id: Ifa42ba766f58ec77e99f67080fd541284bb23c82
parent 959de31e
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -2172,9 +2172,8 @@ void InputDispatcher::dispatchPointerDownOutsideFocus(uint32_t source, int32_t a
        return;
    }

    int32_t displayId = inputWindowHandle->getInfo()->displayId;
    sp<InputWindowHandle> focusedWindowHandle =
            getValueByKey(mFocusedWindowHandlesByDisplay, displayId);
            getValueByKey(mFocusedWindowHandlesByDisplay, mFocusedDisplayId);

    bool hasFocusChanged = !focusedWindowHandle || focusedWindowHandle->getToken() != newToken;