1
0
Fork 0

fixed suggestion Next Suggestion and Previous Suggestion keys scrolling the wrong way for RTL languages

This commit is contained in:
sspanak 2024-02-27 17:48:20 +02:00 committed by Dimo Karaivanov
parent bd3fcc1566
commit 68cd3995d0
3 changed files with 8 additions and 6 deletions

View file

@ -54,6 +54,7 @@ public class TraditionalT9 extends KeyPadHandler {
// language // language
protected ArrayList<Integer> mEnabledLanguages; protected ArrayList<Integer> mEnabledLanguages;
protected Language mLanguage; protected Language mLanguage;
protected Language systemLanguage;
// soft key view // soft key view
private MainView mainView = null; private MainView mainView = null;
@ -226,6 +227,8 @@ public class TraditionalT9 extends KeyPadHandler {
} }
normalizationHandler.removeCallbacksAndMessages(null); normalizationHandler.removeCallbacksAndMessages(null);
systemLanguage = LanguageCollection.getDefault(this);
initUi(); initUi();
updateInputViewShown(); updateInputViewShown();
} }
@ -462,6 +465,7 @@ public class TraditionalT9 extends KeyPadHandler {
} }
cancelAutoAccept(); cancelAutoAccept();
backward = systemLanguage.isRTL() != backward;
suggestionBar.scrollToSuggestion(backward ? -1 : 1); suggestionBar.scrollToSuggestion(backward ? -1 : 1);
mInputMode.setWordStem(suggestionBar.getCurrentSuggestion(), true); mInputMode.setWordStem(suggestionBar.getCurrentSuggestion(), true);
setComposingTextWithHighlightedStem(suggestionBar.getCurrentSuggestion()); setComposingTextWithHighlightedStem(suggestionBar.getCurrentSuggestion());

View file

@ -2,6 +2,7 @@ package io.github.sspanak.tt9.languages;
import android.content.Context; import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
@ -45,7 +46,7 @@ public class LanguageCollection {
return null; return null;
} }
public static Language getDefault(Context context) { @NonNull public static Language getDefault(Context context) {
Language language = getByLocale(context, SystemSettings.getLocale()); Language language = getByLocale(context, SystemSettings.getLocale());
language = language == null ? getByLocale(context, "en") : language; language = language == null ? getByLocale(context, "en") : language;
return language == null ? new NullLanguage(context) : language; return language == null ? new NullLanguage(context) : language;

View file

@ -142,14 +142,11 @@ public class SoftKey extends androidx.appcompat.widget.AppCompatButton implement
int keyId = getId(); int keyId = getId();
boolean multiplePress = lastPressedKey == keyId; boolean multiplePress = lastPressedKey == keyId;
Language language = getCurrentLanguage();
boolean isRTL = language != null && language.isRTL();
if (keyId == R.id.soft_key_add_word) return tt9.onKeyAddWord(false); if (keyId == R.id.soft_key_add_word) return tt9.onKeyAddWord(false);
if (keyId == R.id.soft_key_filter_suggestions) return tt9.onKeyFilterSuggestions(false, multiplePress); if (keyId == R.id.soft_key_filter_suggestions) return tt9.onKeyFilterSuggestions(false, multiplePress);
if (keyId == R.id.soft_key_clear_filter) return tt9.onKeyFilterClear(false); if (keyId == R.id.soft_key_clear_filter) return tt9.onKeyFilterClear(false);
if (keyId == R.id.soft_key_left_arrow) return tt9.onKeyScrollSuggestion(false, !isRTL); if (keyId == R.id.soft_key_left_arrow) return tt9.onKeyScrollSuggestion(false, true);
if (keyId == R.id.soft_key_right_arrow) return tt9.onKeyScrollSuggestion(false, isRTL); if (keyId == R.id.soft_key_right_arrow) return tt9.onKeyScrollSuggestion(false, false);
if (keyId == R.id.soft_key_language) return tt9.onKeyNextLanguage(false); if (keyId == R.id.soft_key_language) return tt9.onKeyNextLanguage(false);
if (keyId == R.id.soft_key_ok) return tt9.onOK(); if (keyId == R.id.soft_key_ok) return tt9.onOK();
if (keyId == R.id.soft_key_settings) return tt9.onKeyShowSettings(false); if (keyId == R.id.soft_key_settings) return tt9.onKeyShowSettings(false);