searchDisplay: Reset the keyboard focus after displaying async results
We hide the content around displaying new search results to prevent flickering, unfortunately, one side effect of hiding an actor is losing key focus if it currently is on the that actor or any child. This could happen in the case of async results showing up after the user had moved focus to the search results. This patch works around that issue by saving the key focus and resetting it back after displaying the new async results. https://bugzilla.gnome.org/show_bug.cgi?id=675078
This commit is contained in:
parent
78e894c6f2
commit
54788d750e
@ -395,10 +395,17 @@ const SearchResults = new Lang.Class({
|
|||||||
function(metas) {
|
function(metas) {
|
||||||
this._clearDisplayForProvider(provider);
|
this._clearDisplayForProvider(provider);
|
||||||
meta.actor.show();
|
meta.actor.show();
|
||||||
|
|
||||||
|
// Hinding drops the key focus if we have it
|
||||||
|
let focus = global.stage.get_key_focus();
|
||||||
this._content.hide();
|
this._content.hide();
|
||||||
|
|
||||||
meta.resultDisplay.renderResults(metas);
|
meta.resultDisplay.renderResults(metas);
|
||||||
this._maybeSetInitialSelection();
|
this._maybeSetInitialSelection();
|
||||||
|
|
||||||
this._content.show();
|
this._content.show();
|
||||||
|
if (this._content.contains(focus))
|
||||||
|
global.stage.set_key_focus(focus);
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
let metas = provider.getResultMetas(results);
|
let metas = provider.getResultMetas(results);
|
||||||
|
Loading…
Reference in New Issue
Block a user