[gnome-shell/wip/carlosg/no-event-source: 16/21] popupMenu: Query stage for target actor instead of event.get_source()
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/carlosg/no-event-source: 16/21] popupMenu: Query stage for target actor instead of event.get_source()
- Date: Fri, 25 Feb 2022 16:10:17 +0000 (UTC)
commit c2ac2648f703153be2ab634ce2e1c5da4cfaac9e
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Feb 25 13:09:33 2022 +0100
popupMenu: 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.
js/ui/popupMenu.js | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index 81ba02ce23..af1ad86427 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -1396,6 +1396,9 @@ var PopupMenuManager = class {
_onCapturedEvent(actor, event) {
let menu = actor._delegate;
+ const targetActor = global.stage.get_device_actor(
+ event.get_device(), event.get_event_sequence());
+
if (event.type() === Clutter.EventType.KEY_PRESS) {
let symbol = event.get_key_symbol();
if (symbol === Clutter.KEY_Down &&
@@ -1408,13 +1411,13 @@ var PopupMenuManager = class {
}
} else if (event.type() === Clutter.EventType.ENTER &&
(event.get_flags() & Clutter.EventFlags.GRAB_NOTIFY) === 0) {
- let hoveredMenu = this._findMenuForSource(event.get_source());
+ let hoveredMenu = this._findMenuForSource(targetActor);
if (hoveredMenu && hoveredMenu !== menu)
this._changeMenu(hoveredMenu);
} else if ((event.type() === Clutter.EventType.BUTTON_PRESS ||
event.type() === Clutter.EventType.TOUCH_BEGIN) &&
- !actor.contains(event.get_source())) {
+ !actor.contains(targetActor)) {
menu.close(BoxPointer.PopupAnimation.FULL);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]