status: Ignore prior single-element lists updating input sources MRU
Consider the existing input sources MRU only valid if it contained more than one element to pick from. Fixes the following situation with initial-setup sessions: - Initial setup Session starts, with several input sources already configured ("us" between them) - InputSourceManager initializes, only the default "us" keymap is available - MRU list is constructed, "us" is picked - InputSourceManager catches up with session configuration, the other extra sources are added - MRU list is reconstructed, "us" is already the most recent - Session ends up with "us" picked, regardless of its position in the list, and no MRU existing prior to startup If we consider the intermediate single-element MRU list invalid, it is still possible to pick the best default source between all the configured ones (the one that was put first in the list, basically), after initialization is complete. But also, it is unnecessary to have if there is a single source to pick from. After the sources list has two elements or more, the MRU list will become effective and preserved during changes to the available sources. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5873 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2495>
This commit is contained in:
parent
022c64961c
commit
9c262ad7bf
@ -524,15 +524,18 @@ var InputSourceManager = class extends Signals.EventEmitter {
|
||||
}
|
||||
|
||||
let mruSources = [];
|
||||
for (let i = 0; i < this._mruSources.length; i++) {
|
||||
for (let j = 0; j < sourcesList.length; j++) {
|
||||
if (this._mruSources[i].type == sourcesList[j].type &&
|
||||
this._mruSources[i].id == sourcesList[j].id) {
|
||||
mruSources = mruSources.concat(sourcesList.splice(j, 1));
|
||||
break;
|
||||
if (this._mruSources.length > 1) {
|
||||
for (let i = 0; i < this._mruSources.length; i++) {
|
||||
for (let j = 0; j < sourcesList.length; j++) {
|
||||
if (this._mruSources[i].type === sourcesList[j].type &&
|
||||
this._mruSources[i].id === sourcesList[j].id) {
|
||||
mruSources = mruSources.concat(sourcesList.splice(j, 1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this._mruSources = mruSources.concat(sourcesList);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user