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

Commit 8232eb9c authored by Alan Viverette's avatar Alan Viverette
Browse files

Preserve but don't draw accessibility focus for unfocused windows

BUG: 6472572
Change-Id: Id3d7d76cc59a3d8141d043d6797f176345fd0cbb
parent 86759039
Loading
Loading
Loading
Loading
+18 −13
Original line number Diff line number Diff line
@@ -2504,28 +2504,35 @@ public final class ViewRootImpl implements ViewParent,
     * @param canvas The canvas on which to draw.
     */
    private void drawAccessibilityFocusedDrawableIfNeeded(Canvas canvas) {
        AccessibilityManager manager = AccessibilityManager.getInstance(mView.mContext);
        if (!mAttachInfo.mHasWindowFocus) {
            return;
        }

        final AccessibilityManager manager = AccessibilityManager.getInstance(mView.mContext);
        if (!manager.isEnabled() || !manager.isTouchExplorationEnabled()) {
            return;
        }
        if (mAccessibilityFocusedHost == null || mAccessibilityFocusedHost.mAttachInfo == null) {

        final View host = mAccessibilityFocusedHost;
        if (host == null || host.mAttachInfo == null) {
            return;
        }
        Drawable drawable = getAccessibilityFocusedDrawable();

        final Drawable drawable = getAccessibilityFocusedDrawable();
        if (drawable == null) {
            return;
        }
        AccessibilityNodeProvider provider =
            mAccessibilityFocusedHost.getAccessibilityNodeProvider();
        Rect bounds = mView.mAttachInfo.mTmpInvalRect;

        final AccessibilityNodeProvider provider = host.getAccessibilityNodeProvider();
        final Rect bounds = mView.mAttachInfo.mTmpInvalRect;
        if (provider == null) {
            mAccessibilityFocusedHost.getBoundsOnScreen(bounds);
            host.getBoundsOnScreen(bounds);
        } else if (mAccessibilityFocusedVirtualView != null) {
            mAccessibilityFocusedVirtualView.getBoundsInScreen(bounds);
        } else {
            if (mAccessibilityFocusedVirtualView == null) {
            return;
        }
            mAccessibilityFocusedVirtualView.getBoundsInScreen(bounds);
        }

        bounds.offset(-mAttachInfo.mWindowLeft, -mAttachInfo.mWindowTop);
        bounds.intersect(0, 0, mAttachInfo.mViewRootImpl.mWidth, mAttachInfo.mViewRootImpl.mHeight);
        drawable.setBounds(bounds);
@@ -3133,8 +3140,6 @@ public final class ViewRootImpl implements ViewParent,
                        mHasHadWindowFocus = true;
                    }

                    setAccessibilityFocus(null, null);

                    if (mView != null && mAccessibilityManager.isEnabled()) {
                        if (hasWindowFocus) {
                            mView.sendAccessibilityEvent(