new dev bug: fixed the language selection dialog better
This commit is contained in:
parent
2b79e6ad66
commit
c2c2e2b75e
1 changed files with 8 additions and 12 deletions
|
|
@ -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();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue