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

Commit 07a0fd0f authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Reset old keyboard state before switching to new keyboard (DO NOT MERGE)

Bug: 3322158
Change-Id: I8030202f9b1b491bd9b7acf5ce14b6d8f14db978
parent 4246861c
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ public class LatinKeyboard extends Keyboard {
    private final int NUMBER_HINT_COUNT = 10;
    private Key[] mNumberHintKeys;
    private Drawable[] mNumberHintIcons = new Drawable[NUMBER_HINT_COUNT];
    private int mSpaceKeyIndex = -1;
    private final int[] mSpaceKeyIndexArray;
    private int mSpaceDragStartX;
    private int mSpaceDragLastDiff;
    private Locale mLocale;
@@ -144,7 +144,8 @@ public class LatinKeyboard extends Keyboard {
                R.dimen.spacebar_vertical_correction);
        mIsAlphaKeyboard = xmlLayoutResId == R.xml.kbd_qwerty
                || xmlLayoutResId == R.xml.kbd_qwerty_black;
        mSpaceKeyIndex = indexOf(LatinIME.KEYCODE_SPACE);
        // The index of space key is available only after Keyboard constructor has finished.
        mSpaceKeyIndexArray = new int[] { indexOf(LatinIME.KEYCODE_SPACE) };
        initializeNumberHintResources(context);
        // TODO remove this initialization after cleanup
        mVerticalGap = super.getVerticalGap();
@@ -795,7 +796,7 @@ public class LatinKeyboard extends Keyboard {
    @Override
    public int[] getNearestKeys(int x, int y) {
        if (mCurrentlyInSpace) {
            return new int[] { mSpaceKeyIndex };
            return mSpaceKeyIndexArray;
        } else {
            // Avoid dead pixels at edges of the keyboard
            return super.getNearestKeys(Math.max(0, Math.min(x, getMinWidth() - 1)),
+10 −5
Original line number Diff line number Diff line
@@ -76,14 +76,19 @@ public class LatinKeyboardView extends LatinKeyboardBaseView {
    }

    @Override
    public void setKeyboard(Keyboard k) {
        super.setKeyboard(k);
    public void setKeyboard(Keyboard newKeyboard) {
        final Keyboard oldKeyboard = getKeyboard();
        if (oldKeyboard instanceof LatinKeyboard) {
            // Reset old keyboard state before switching to new keyboard.
            ((LatinKeyboard)oldKeyboard).keyReleased();
        }
        super.setKeyboard(newKeyboard);
        // One-seventh of the keyboard width seems like a reasonable threshold
        mJumpThresholdSquare = k.getMinWidth() / 7;
        mJumpThresholdSquare = newKeyboard.getMinWidth() / 7;
        mJumpThresholdSquare *= mJumpThresholdSquare;
        // Assuming there are 4 rows, this is the coordinate of the last row
        mLastRowY = (k.getHeight() * 3) / 4;
        setKeyboardLocal(k);
        mLastRowY = (newKeyboard.getHeight() * 3) / 4;
        setKeyboardLocal(newKeyboard);
    }

    @Override