[gnome-shell/wip/carlosg/grabs-pt2: 11/25] boxPointer: Do not mute key events while showing
- From: Robert Mader <rmader src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/carlosg/grabs-pt2: 11/25] boxPointer: Do not mute key events while showing
- Date: Fri, 28 Jan 2022 12:56:55 +0000 (UTC)
commit c6dc97be4a987888c8e7a0af489214c274b8a1f8
Author: Carlos Garnacho <carlosg gnome org>
Date: Thu Nov 18 00:18:09 2021 +0100
boxPointer: Do not mute key events while showing
We want to mute things like pointers hovering the BoxPointer while
it does open. However keyboard events should still be handled
promptly.
Since Clutter.grab() will involve different actors being grabbed
and focused, this will have some more presence, e.g. when navigating
panel menus. We want to be able to navigate outside a menu while it
is still being shown.
js/ui/boxpointer.js | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js
index be9c57ce03..1db8e56afb 100644
--- a/js/ui/boxpointer.js
+++ b/js/ui/boxpointer.js
@@ -46,6 +46,7 @@ var BoxPointer = GObject.registerClass({
this.add_actor(this._border);
this.set_child_above_sibling(this.bin, this._border);
this._sourceAlignment = 0.5;
+ this._muteKeys = true;
this._muteInput = true;
this.connect('notify::visible', () => {
@@ -58,8 +59,16 @@ var BoxPointer = GObject.registerClass({
this.connect('destroy', this._onDestroy.bind(this));
}
- vfunc_captured_event() {
- if (this._muteInput)
+ vfunc_captured_event(event) {
+ if (event.type() === Clutter.EventType.ENTER ||
+ event.type() === Clutter.EventType.LEAVE)
+ return Clutter.EVENT_PROPAGATE;
+
+ let mute = event.type() === Clutter.EventType.KEY_PRESS ||
+ event.type() === Clutter.EventType.KEY_RELEASE
+ ? this._muteKeys : this._muteInput;
+
+ if (mute)
return Clutter.EVENT_STOP;
return Clutter.EVENT_PROPAGATE;
@@ -86,6 +95,7 @@ var BoxPointer = GObject.registerClass({
else
this.opacity = 255;
+ this._muteKeys = false;
this.show();
if (animate & PopupAnimation.SLIDE) {
@@ -148,6 +158,7 @@ var BoxPointer = GObject.registerClass({
}
this._muteInput = true;
+ this._muteKeys = true;
this.remove_all_transitions();
this.ease({
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]