diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/dialogs/ChangeLanguageDialog.java b/app/src/main/java/io/github/sspanak/tt9/ui/dialogs/ChangeLanguageDialog.java index a2d70955..9be308cc 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/dialogs/ChangeLanguageDialog.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/dialogs/ChangeLanguageDialog.java @@ -1,7 +1,6 @@ package io.github.sspanak.tt9.ui.dialogs; import android.content.DialogInterface; -import android.os.Handler; import android.view.KeyEvent; import android.view.View; import android.widget.LinearLayout; @@ -51,8 +50,12 @@ public class ChangeLanguageDialog extends PopupDialog { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { + if (event.getAction() == KeyEvent.ACTION_DOWN) { + return true; + } + if (Key.isBack(keyCode)) { - closeAsync(); + close(); return true; } @@ -62,21 +65,19 @@ public class ChangeLanguageDialog extends PopupDialog { languageId = getSelected(); } else if (Key.isNumber(keyCode)) { languageId = getByIndex(Key.codeToNumber(settings, keyCode) - 1); - } else if (event.getAction() == KeyEvent.ACTION_UP && (keyCode == KeyEvent.KEYCODE_DPAD_DOWN || keyCode == KeyEvent.KEYCODE_DPAD_UP)) { + } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN || keyCode == KeyEvent.KEYCODE_DPAD_UP) { for (LanguageRadioButton radio : radioButtonsCache) radio.autoHighlightCompat(); // yet another device hack } if (languageId == -1) { - return false; + return true; } if (onLanguageChanged != null) { onLanguageChanged.accept(languageId); } - - // close after returning to prevent the key event from leaking into the current input field - closeAsync(); + close(); return true; } @@ -97,11 +98,6 @@ public class ChangeLanguageDialog extends PopupDialog { } - private void closeAsync() { - new Handler().post(this::close); - } - - @Override protected void close() { detachRadioButtons();