searchController: Query stage for target actor instead of event.get_source()

Events are going to stop containing the destinatary, so stop using this
API. Querying the stage is equivalent and ensured to be up-to-date.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2216>
This commit is contained in:
Carlos Garnacho 2022-02-25 13:10:30 +01:00 committed by Marge Bot
parent 17730fe5c4
commit dc0f286fe9

View File

@ -306,12 +306,12 @@ var SearchController = GObject.registerClass({
_onCapturedEvent(actor, event) {
if (event.type() === Clutter.EventType.BUTTON_PRESS) {
let source = event.get_source();
if (source !== this._text &&
const targetActor = global.stage.get_event_actor(event);
if (targetActor !== this._text &&
this._text.has_key_focus() &&
this._text.text === '' &&
!this._text.has_preedit() &&
!Main.layoutManager.keyboardBox.contains(source)) {
!Main.layoutManager.keyboardBox.contains(targetActor)) {
// the user clicked outside after activating the entry, but
// with no search term entered and no keyboard button pressed
// - cancel the search