1
0
Fork 0

new dev bug: fixed the language selection dialog better

This commit is contained in:
sspanak 2025-05-28 16:49:44 +03:00 committed by Dimo Karaivanov
parent 2b79e6ad66
commit c2c2e2b75e

View file

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