Merge pull request #16042 from keymanapp/fix/web/16041_displaymenu

fix(web): fix race displaying active keyboard in menu
This commit is contained in:
Eberhard Beilharz 2026-06-02 15:28:19 +02:00 • committed by GitHub
commit e21f2020d0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 7 deletions

View file

@ -261,12 +261,19 @@ if(!keymanweb) {
}
this.updateList = false;
// Set the menu selector to the currently saved keyboard
const sk = keymanweb.getSavedKeyboard().split(':');
if(sk.length < 2) {
sk[1] = '';
// Set the menu selector to the last active keyboard
let activeKeyboard = keymanweb.getActiveKeyboard();
let activeLanguage = '';
if (activeKeyboard) {
activeLanguage = keymanweb.getActiveLanguage();
} else {
// savedKeyboard is only correct if we use global keyboard settings,
// otherwise it's set to the first keyboard in the list
const savedKeyboard = keymanweb.getSavedKeyboard().split(':');
activeKeyboard = savedKeyboard[0];
activeLanguage = savedKeyboard.length < 2 ? '' : savedKeyboard[1];
}
this.updateMenu(sk[0],sk[1]);
this.updateMenu(activeKeyboard, activeLanguage);
// Redisplay the UI to correct width for any new language entries
if(keymanweb.getLastActiveElement()) {

View file

@ -542,8 +542,18 @@ if(!keymanweb) {
}
// Highlight the last active keyboard
const sk=keymanweb.getSavedKeyboard().split(':');
this.updateMenu(sk[0],sk[1]);
let activeKeyboard = keymanweb.getActiveKeyboard();
let activeLanguage = '';
if (activeKeyboard) {
activeLanguage = keymanweb.getActiveLanguage();
} else {
// savedKeyboard is only correct if we use global keyboard settings,
// otherwise it's set to the first keyboard in the list
const savedKeyboard = keymanweb.getSavedKeyboard().split(':');
activeKeyboard = savedKeyboard[0];
activeLanguage = savedKeyboard[1];
}
this.updateMenu(activeKeyboard, activeLanguage);
}
/* ----------------------------------------