diff options
| author | Jules Aguillon | 2023-06-08 21:59:24 +0200 |
|---|---|---|
| committer | Jules Aguillon | 2023-06-10 18:07:23 +0200 |
| commit | a26a535729aa9937af0aab338273c645e33192d1 (patch) | |
| tree | d3bc99f462d142a9e06bed8215d29e3d4c079937 /srcs/juloo.keyboard2/Keyboard2.java | |
| parent | b4177b52676321cd4a5fe7a336a4f09e50274f86 (diff) | |
| download | unexpected-keyboard-a26a535729aa9937af0aab338273c645e33192d1.tar.gz unexpected-keyboard-a26a535729aa9937af0aab338273c645e33192d1.zip | |
Fix `_localeTextLayout` null on API < 12
On API level < 12 or on some rare cases, `refreshSubtypeLayout` was not
called, making `_localeTextLayout` uninitialized.
This might also happen if `getExtraValueOf` returns an invalid layout name.
eg. `method.xml` contains an invalid layout name.
Diffstat (limited to 'srcs/juloo.keyboard2/Keyboard2.java')
| -rw-r--r-- | srcs/juloo.keyboard2/Keyboard2.java | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java index 2742de7..f8aab34 100644 --- a/srcs/juloo.keyboard2/Keyboard2.java +++ b/srcs/juloo.keyboard2/Keyboard2.java @@ -33,7 +33,7 @@ public class Keyboard2 extends InputMethodService // If not 'null', the layout to use instead of [_currentTextLayout]. private KeyboardData _currentSpecialLayout; private Current_text_layout _currentTextLayout; - // Layout associated with the currently selected locale. + // Layout associated with the currently selected locale. Not 'null'. private KeyboardData _localeTextLayout; private ViewGroup _emojiPane = null; public int actionId; // Action performed by the Action key. @@ -99,15 +99,6 @@ public class Keyboard2 extends InputMethodService return Arrays.asList(); } - private void refreshSubtypeLayout(InputMethodSubtype subtype) - { - String s = subtype.getExtraValueOf("default_layout"); - if (s != null) - _localeTextLayout = _config.layout_of_string(getResources(), s); - else - _localeTextLayout = KeyboardData.load(getResources(), R.xml.qwerty); - } - private void extra_keys_of_subtype(Set<KeyValue> dst, InputMethodSubtype subtype) { String extra_keys = subtype.getExtraValueOf("extra_keys"); @@ -164,6 +155,7 @@ public class Keyboard2 extends InputMethodService else _config.shouldOfferSwitchingToNextInputMethod = shouldOfferSwitchingToNextInputMethod(); _config.shouldOfferVoiceTyping = (get_voice_typing_im(imm) != null); + KeyboardData default_layout = null; if (VERSION.SDK_INT < 12) { // Subtypes won't work well under API level 12 (getExtraValueOf) @@ -179,10 +171,15 @@ public class Keyboard2 extends InputMethodService } else { - refreshSubtypeLayout(subtype); + String s = subtype.getExtraValueOf("default_layout"); + if (s != null) + default_layout = _config.layout_of_string(getResources(), s); refreshAccentsOption(imm, subtype); } } + if (default_layout == null) + default_layout = KeyboardData.load(getResources(), R.xml.qwerty); + _localeTextLayout = default_layout; if (_config.second_layout == null) { _config.shouldOfferSwitchingToSecond = false; |
