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

Commit f147794f authored by alanv's avatar alanv
Browse files

Refresh Accessibility key mapping when KeyboardView changes Keyboards.

Bug: 6609626
Change-Id: I93d764b46e96fe70b61c91a7dcb46945ac8853dd
parent fe824948
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -85,9 +85,20 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat
     */
    public void setView(KeyboardView keyboardView) {
        mKeyboardView = keyboardView;
        updateParentLocation();

        // Since this class is constructed lazily, we might not get a subsequent
        // call to setKeyboard() and therefore need to call it now.
        setKeyboard(mKeyboardView.getKeyboard());
    }

    /**
     * Sets the keyboard represented by this node provider.
     *
     * @param keyboard The keyboard to represent.
     */
    public void setKeyboard(Keyboard keyboard) {
        assignVirtualViewIds();
        updateParentLocation();
    }

    /**
+6 −0
Original line number Diff line number Diff line
@@ -86,6 +86,12 @@ public class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat {
        }
    }

    public void setKeyboard(Keyboard keyboard) {
        if (mAccessibilityNodeProvider != null) {
            mAccessibilityNodeProvider.setKeyboard(keyboard);
        }
    }

    /**
     * Proxy method for View.getAccessibilityNodeProvider(). This method is
     * called in SDK version 15 and higher to obtain the virtual node hierarchy
+4 −0
Original line number Diff line number Diff line
@@ -468,6 +468,10 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
        if (ProductionFlag.IS_EXPERIMENTAL) {
            ResearchLogger.latinKeyboardView_setKeyboard(keyboard);
        }

        // This always needs to be set since the accessibility state can
        // potentially change without the keyboard being set again.
        AccessibleKeyboardViewProxy.getInstance().setKeyboard(keyboard);
    }

    /**