systemActions: Filter out empty (folded) terms
We split the search string into words using whitespace, while GLib.tokenize_and_fold() splits on any non-alphanumeric characters. That is, a valid search term like ',' will be tokenized as [], so the original non-empty terms may get mapped to an empty array. And as [].every() returns true for any condition[0], we end up matching *all* system actions in that case. We want the exact opposite and not return any results, so handle that case explicitly. [0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3169
This commit is contained in:
parent
59ade00b94
commit
b2d6c11ec3
@ -269,6 +269,10 @@ const SystemActions = GObject.registerClass({
|
|||||||
terms = terms.map(
|
terms = terms.map(
|
||||||
term => GLib.str_tokenize_and_fold(term, null)[0]).flat(2);
|
term => GLib.str_tokenize_and_fold(term, null)[0]).flat(2);
|
||||||
|
|
||||||
|
// tokenizing may return an empty array
|
||||||
|
if (terms.length === 0)
|
||||||
|
return [];
|
||||||
|
|
||||||
let results = [];
|
let results = [];
|
||||||
|
|
||||||
for (let [key, { available, keywords }] of this._actions) {
|
for (let [key, { available, keywords }] of this._actions) {
|
||||||
|
Loading…
Reference in New Issue
Block a user