search-results: Fix flickering of the selection

When updating search results, the current result set is
recreated from scratch before setting the selection
highlight. This results in two style changes of the selected
item, and as a CSS transition is used to animate the style
change, the selected item flickers if it remains the same as
with the previous search term.
Fix by hiding the result set until the selection is set, to
avoid the transition in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=646019
This commit is contained in:
Florian Müllner 2011-04-08 16:48:33 +02:00
parent 6d11247417
commit f0622c1896

View File

@ -333,6 +333,13 @@ SearchResults.prototype = {
let terms = this._searchSystem.getTerms(); let terms = this._searchSystem.getTerms();
this._openSearchSystem.setSearchTerms(terms); this._openSearchSystem.setSearchTerms(terms);
// To avoid CSS transitions causing flickering
// of the selection when the first search result
// stays the same, we hide the content while
// filling in the results and setting the initial
// selection.
this._content.hide();
for (let i = 0; i < results.length; i++) { for (let i = 0; i < results.length; i++) {
let [provider, providerResults] = results[i]; let [provider, providerResults] = results[i];
let meta = this._metaForProvider(provider); let meta = this._metaForProvider(provider);
@ -343,6 +350,8 @@ SearchResults.prototype = {
if (this._selectedOpenSearchButton == -1) if (this._selectedOpenSearchButton == -1)
this.selectDown(false); this.selectDown(false);
this._content.show();
return true; return true;
}, },