Loading java/res/xml/keyboard_layout_set_qwerty.xml +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" latin:enableProximityCharsCorrection="true" latin:supportsSplitLayout="false" /> latin:supportsSplitLayout="true" /> <Element latin:elementName="symbols" latin:elementKeyboard="@xml/kbd_symbols" /> Loading java/src/com/android/inputmethod/keyboard/KeyboardId.java +2 −3 Original line number Diff line number Diff line Loading @@ -77,8 +77,7 @@ public final class KeyboardId { private final int mHashCode; public KeyboardId(final int elementId, final KeyboardLayoutSet.Params params, boolean isSplitLayout) { public KeyboardId(final int elementId, final KeyboardLayoutSet.Params params) { mSubtype = params.mSubtype; mLocale = SubtypeLocaleUtils.getSubtypeLocale(mSubtype); mWidth = params.mKeyboardWidth; Loading @@ -91,7 +90,7 @@ public final class KeyboardId { mCustomActionLabel = (mEditorInfo.actionLabel != null) ? mEditorInfo.actionLabel.toString() : null; mHasShortcutKey = params.mVoiceInputKeyEnabled; mIsSplitLayout = isSplitLayout; mIsSplitLayout = params.mIsSplitLayoutEnabled; mHashCode = computeHashCode(this); } Loading java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java +18 −5 Original line number Diff line number Diff line Loading @@ -115,6 +115,12 @@ public final class KeyboardLayoutSet { int mKeyboardWidth; int mKeyboardHeight; int mScriptId = ScriptUtils.SCRIPT_LATIN; // Indicates if the user has enabled the split-layout preference // and the required ProductionFlags are enabled. boolean mIsSplitLayoutEnabledByUser; // Indicates if split layout is actually enabled, taking into account // whether the user has enabled it, and the keyboard layout supports it. boolean mIsSplitLayoutEnabled; // Sparse array of KeyboardLayoutSet element parameters indexed by element's id. final SparseArray<ElementParams> mKeyboardLayoutSetElementIdToParamsMap = new SparseArray<>(); Loading Loading @@ -170,9 +176,9 @@ public final class KeyboardLayoutSet { // specified as an elementKeyboard attribute in the file. // The KeyboardId is an internal key for a Keyboard object. // TODO: AND mSupportsSplitLayout with the user preference that forces a split. final KeyboardId id = new KeyboardId(keyboardLayoutSetElementId, mParams, elementParams.mSupportsSplitLayout); mParams.mIsSplitLayoutEnabled = mParams.mIsSplitLayoutEnabledByUser && elementParams.mSupportsSplitLayout; final KeyboardId id = new KeyboardId(keyboardLayoutSetElementId, mParams); try { return getKeyboard(elementParams, id); } catch (final RuntimeException e) { Loading Loading @@ -290,12 +296,19 @@ public final class KeyboardLayoutSet { return this; } public void disableTouchPositionCorrectionData() { public Builder disableTouchPositionCorrectionData() { mParams.mDisableTouchPositionCorrectionDataForTest = true; return this; } public void setScriptId(final int scriptId) { public Builder setScriptId(final int scriptId) { mParams.mScriptId = scriptId; return this; } public Builder setSplitLayoutEnabledByUser(final boolean enabled) { mParams.mIsSplitLayoutEnabledByUser = enabled; return this; } public KeyboardLayoutSet build() { Loading java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +3 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.SubtypeSwitcher; import com.android.inputmethod.latin.WordComposer; import com.android.inputmethod.latin.define.ProductionFlags; import com.android.inputmethod.latin.settings.Settings; import com.android.inputmethod.latin.settings.SettingsValues; import com.android.inputmethod.latin.utils.ResourceUtils; Loading Loading @@ -114,6 +115,8 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { builder.setSubtype(mSubtypeSwitcher.getCurrentSubtype()); builder.setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey); builder.setLanguageSwitchKeyEnabled(mLatinIME.shouldShowLanguageSwitchKey()); builder.setSplitLayoutEnabledByUser(ProductionFlags.IS_SPLIT_KEYBOARD_SUPPORTED && settingsValues.mIsSplitKeyboardEnabled); mKeyboardLayoutSet = builder.build(); try { mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState); Loading java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java +7 −2 Original line number Diff line number Diff line Loading @@ -674,15 +674,18 @@ public class KeyboardBuilder<KP extends KeyboardParams> { R.styleable.Keyboard_Case_languageCode, id.mLocale.getLanguage()); final boolean countryCodeMatched = matchString(caseAttr, R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry()); final boolean splitLayoutMatched = matchBoolean(caseAttr, R.styleable.Keyboard_Case_isSplitLayout, id.mIsSplitLayout); final boolean selected = keyboardLayoutSetMatched && keyboardLayoutSetElementMatched && keyboardThemeMacthed && modeMatched && navigateNextMatched && navigatePreviousMatched && passwordInputMatched && clobberSettingsKeyMatched && hasShortcutKeyMatched && languageSwitchKeyEnabledMatched && isMultiLineMatched && imeActionMatched && isIconDefinedMatched && localeCodeMatched && languageCodeMatched && countryCodeMatched; && localeCodeMatched && languageCodeMatched && countryCodeMatched && splitLayoutMatched; if (DEBUG) { startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE, startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE, textAttr(caseAttr.getString( R.styleable.Keyboard_Case_keyboardLayoutSet), "keyboardLayoutSet"), textAttr(caseAttr.getString( Loading @@ -707,6 +710,8 @@ public class KeyboardBuilder<KP extends KeyboardParams> { "languageSwitchKeyEnabled"), booleanAttr(caseAttr, R.styleable.Keyboard_Case_isMultiLine, "isMultiLine"), booleanAttr(caseAttr, R.styleable.Keyboard_Case_isSplitLayout, "splitLayout"), textAttr(caseAttr.getString(R.styleable.Keyboard_Case_isIconDefined), "isIconDefined"), textAttr(caseAttr.getString(R.styleable.Keyboard_Case_localeCode), Loading Loading
java/res/xml/keyboard_layout_set_qwerty.xml +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" latin:enableProximityCharsCorrection="true" latin:supportsSplitLayout="false" /> latin:supportsSplitLayout="true" /> <Element latin:elementName="symbols" latin:elementKeyboard="@xml/kbd_symbols" /> Loading
java/src/com/android/inputmethod/keyboard/KeyboardId.java +2 −3 Original line number Diff line number Diff line Loading @@ -77,8 +77,7 @@ public final class KeyboardId { private final int mHashCode; public KeyboardId(final int elementId, final KeyboardLayoutSet.Params params, boolean isSplitLayout) { public KeyboardId(final int elementId, final KeyboardLayoutSet.Params params) { mSubtype = params.mSubtype; mLocale = SubtypeLocaleUtils.getSubtypeLocale(mSubtype); mWidth = params.mKeyboardWidth; Loading @@ -91,7 +90,7 @@ public final class KeyboardId { mCustomActionLabel = (mEditorInfo.actionLabel != null) ? mEditorInfo.actionLabel.toString() : null; mHasShortcutKey = params.mVoiceInputKeyEnabled; mIsSplitLayout = isSplitLayout; mIsSplitLayout = params.mIsSplitLayoutEnabled; mHashCode = computeHashCode(this); } Loading
java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java +18 −5 Original line number Diff line number Diff line Loading @@ -115,6 +115,12 @@ public final class KeyboardLayoutSet { int mKeyboardWidth; int mKeyboardHeight; int mScriptId = ScriptUtils.SCRIPT_LATIN; // Indicates if the user has enabled the split-layout preference // and the required ProductionFlags are enabled. boolean mIsSplitLayoutEnabledByUser; // Indicates if split layout is actually enabled, taking into account // whether the user has enabled it, and the keyboard layout supports it. boolean mIsSplitLayoutEnabled; // Sparse array of KeyboardLayoutSet element parameters indexed by element's id. final SparseArray<ElementParams> mKeyboardLayoutSetElementIdToParamsMap = new SparseArray<>(); Loading Loading @@ -170,9 +176,9 @@ public final class KeyboardLayoutSet { // specified as an elementKeyboard attribute in the file. // The KeyboardId is an internal key for a Keyboard object. // TODO: AND mSupportsSplitLayout with the user preference that forces a split. final KeyboardId id = new KeyboardId(keyboardLayoutSetElementId, mParams, elementParams.mSupportsSplitLayout); mParams.mIsSplitLayoutEnabled = mParams.mIsSplitLayoutEnabledByUser && elementParams.mSupportsSplitLayout; final KeyboardId id = new KeyboardId(keyboardLayoutSetElementId, mParams); try { return getKeyboard(elementParams, id); } catch (final RuntimeException e) { Loading Loading @@ -290,12 +296,19 @@ public final class KeyboardLayoutSet { return this; } public void disableTouchPositionCorrectionData() { public Builder disableTouchPositionCorrectionData() { mParams.mDisableTouchPositionCorrectionDataForTest = true; return this; } public void setScriptId(final int scriptId) { public Builder setScriptId(final int scriptId) { mParams.mScriptId = scriptId; return this; } public Builder setSplitLayoutEnabledByUser(final boolean enabled) { mParams.mIsSplitLayoutEnabledByUser = enabled; return this; } public KeyboardLayoutSet build() { Loading
java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +3 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.SubtypeSwitcher; import com.android.inputmethod.latin.WordComposer; import com.android.inputmethod.latin.define.ProductionFlags; import com.android.inputmethod.latin.settings.Settings; import com.android.inputmethod.latin.settings.SettingsValues; import com.android.inputmethod.latin.utils.ResourceUtils; Loading Loading @@ -114,6 +115,8 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { builder.setSubtype(mSubtypeSwitcher.getCurrentSubtype()); builder.setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey); builder.setLanguageSwitchKeyEnabled(mLatinIME.shouldShowLanguageSwitchKey()); builder.setSplitLayoutEnabledByUser(ProductionFlags.IS_SPLIT_KEYBOARD_SUPPORTED && settingsValues.mIsSplitKeyboardEnabled); mKeyboardLayoutSet = builder.build(); try { mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState); Loading
java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java +7 −2 Original line number Diff line number Diff line Loading @@ -674,15 +674,18 @@ public class KeyboardBuilder<KP extends KeyboardParams> { R.styleable.Keyboard_Case_languageCode, id.mLocale.getLanguage()); final boolean countryCodeMatched = matchString(caseAttr, R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry()); final boolean splitLayoutMatched = matchBoolean(caseAttr, R.styleable.Keyboard_Case_isSplitLayout, id.mIsSplitLayout); final boolean selected = keyboardLayoutSetMatched && keyboardLayoutSetElementMatched && keyboardThemeMacthed && modeMatched && navigateNextMatched && navigatePreviousMatched && passwordInputMatched && clobberSettingsKeyMatched && hasShortcutKeyMatched && languageSwitchKeyEnabledMatched && isMultiLineMatched && imeActionMatched && isIconDefinedMatched && localeCodeMatched && languageCodeMatched && countryCodeMatched; && localeCodeMatched && languageCodeMatched && countryCodeMatched && splitLayoutMatched; if (DEBUG) { startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE, startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE, textAttr(caseAttr.getString( R.styleable.Keyboard_Case_keyboardLayoutSet), "keyboardLayoutSet"), textAttr(caseAttr.getString( Loading @@ -707,6 +710,8 @@ public class KeyboardBuilder<KP extends KeyboardParams> { "languageSwitchKeyEnabled"), booleanAttr(caseAttr, R.styleable.Keyboard_Case_isMultiLine, "isMultiLine"), booleanAttr(caseAttr, R.styleable.Keyboard_Case_isSplitLayout, "splitLayout"), textAttr(caseAttr.getString(R.styleable.Keyboard_Case_isIconDefined), "isIconDefined"), textAttr(caseAttr.getString(R.styleable.Keyboard_Case_localeCode), Loading