dash: Clean up search pane creation
There was some weirdness relating to when the search pane is shown in a timeout, and how that relates to setSearch. Instead of doing this in the timeout, just call setSearch() in the timeout. The pane hide/show state is directly controlled from the handler.
This commit is contained in:
parent
1636e6c187
commit
619066780f
@ -447,11 +447,19 @@ Dash.prototype = {
|
||||
this._searchAreaApps = null;
|
||||
this._searchAreaDocs = null;
|
||||
|
||||
this._searchQueued = false;
|
||||
this._searchId = 0;
|
||||
this._searchEntry.entry.connect('text-changed', Lang.bind(this, function (se, prop) {
|
||||
let text = this._searchEntry.getText();
|
||||
text = text.replace(/^\s+/g, "").replace(/\s+$/g, "")
|
||||
this._searchActive = text != '';
|
||||
if (this._searchQueued)
|
||||
if (!this._searchActive) {
|
||||
if (this._searchPane != null)
|
||||
this._searchPane.close();
|
||||
if (this._searchId > 0)
|
||||
Mainloop.source_remove(this._searchId);
|
||||
return;
|
||||
}
|
||||
if (this._searchId > 0)
|
||||
return;
|
||||
if (this._searchPane == null) {
|
||||
this._searchPane = new ResultPane(this);
|
||||
@ -468,18 +476,13 @@ Dash.prototype = {
|
||||
this._addPane(this._searchPane);
|
||||
this._searchEntry.setPane(this._searchPane);
|
||||
}
|
||||
this._searchQueued = true;
|
||||
Mainloop.timeout_add(250, Lang.bind(this, function() {
|
||||
this._searchPane.open();
|
||||
this._searchId = Mainloop.timeout_add(150, Lang.bind(this, function() {
|
||||
this._searchId = 0;
|
||||
let text = this._searchEntry.getText();
|
||||
// Strip leading and trailing whitespace
|
||||
text = text.replace(/^\s+/g, "").replace(/\s+$/g, "");
|
||||
this._searchQueued = false;
|
||||
this._searchAreaApps.setSearch(text);
|
||||
this._searchAreaDocs.setSearch(text);
|
||||
if (text == '')
|
||||
this._searchPane.close();
|
||||
else
|
||||
this._searchPane.open();
|
||||
return false;
|
||||
}));
|
||||
}));
|
||||
|
Loading…
Reference in New Issue
Block a user