history: Trim input and ignore if empty
This ports the runDialog changes of [1] to the underlying history component, where they can benefit looking glass as well: the history is now responsible for trimming the input and deciding that it shouldn’t be stored if empty. (Note that _setPrevItem and _setNextItem already skipped updating the history if the entry was empty.) Since both users, runDialog and lookingGlass, also need the trimmed input for other reasons – runDialog to avoid issues when interpreting the command as a file path (if it can’t be executed as a command), lookingGlass to decide whether a command should be run at all – have addItem return the trimmed input. (runDialog and lookingGlass are not yet changed to take advantage of this – that will be done in separate commits.) [1]: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1442 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1653>
This commit is contained in:
parent
30203f2694
commit
d31f805817
@ -69,21 +69,24 @@ var HistoryManager = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addItem(input) {
|
addItem(input) {
|
||||||
if (this._history.length === 0 ||
|
input = input.trim();
|
||||||
this._history[this._history.length - 1] !== input) {
|
if (input &&
|
||||||
|
(this._history.length === 0 ||
|
||||||
|
this._history[this._history.length - 1] !== input)) {
|
||||||
this._history = this._history.filter(entry => entry !== input);
|
this._history = this._history.filter(entry => entry !== input);
|
||||||
this._history.push(input);
|
this._history.push(input);
|
||||||
this._save();
|
this._save();
|
||||||
}
|
}
|
||||||
this._historyIndex = this._history.length;
|
this._historyIndex = this._history.length;
|
||||||
|
return input; // trimmed
|
||||||
}
|
}
|
||||||
|
|
||||||
_onEntryKeyPress(entry, event) {
|
_onEntryKeyPress(entry, event) {
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
if (symbol === Clutter.KEY_Up)
|
if (symbol === Clutter.KEY_Up)
|
||||||
return this._setPrevItem(entry.get_text());
|
return this._setPrevItem(entry.get_text().trim());
|
||||||
else if (symbol === Clutter.KEY_Down)
|
else if (symbol === Clutter.KEY_Down)
|
||||||
return this._setNextItem(entry.get_text());
|
return this._setNextItem(entry.get_text().trim());
|
||||||
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user