[gnome-shell/wip/grab-helper-top-panel: 17/20] grabHelper: Use captured-event for escape ungrabs



commit ef9006fa65bf6f1ae24c16e53fbe164ea825b186
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Mon Nov 26 14:47:30 2012 -0500

    grabHelper: Use captured-event for escape ungrabs
    
    I have no idea why we used 'event' rather than 'captured-event' before.
    'event' has some really strange quirks that came up when porting PopupMenu
    to the GrabHelper

 js/ui/grabHelper.js |   25 ++++++-------------------
 1 files changed, 6 insertions(+), 19 deletions(-)
---
diff --git a/js/ui/grabHelper.js b/js/ui/grabHelper.js
index 3623a0f..7e86c84 100644
--- a/js/ui/grabHelper.js
+++ b/js/ui/grabHelper.js
@@ -43,7 +43,6 @@ const GrabHelper = new Lang.Class({
 
         this._actors = [];
         this._capturedEventId = 0;
-        this._eventId = 0;
         this._keyFocusNotifyId = 0;
         this._focusWindowChangedId = 0;
         this._ignoreRelease = false;
@@ -171,7 +170,6 @@ const GrabHelper = new Lang.Class({
                 return false;
 
             this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
-            this._eventId = global.stage.connect('event', Lang.bind(this, this._onEvent));
         }
 
         this._modalCount++;
@@ -188,11 +186,6 @@ const GrabHelper = new Lang.Class({
             this._capturedEventId = 0;
         }
 
-        if (this._eventId > 0) {
-            global.stage.disconnect(this._eventId);
-            this._eventId = 0;
-        }
-
         Main.popModal(this._owner);
         global.sync_pointer();
     },
@@ -323,6 +316,12 @@ const GrabHelper = new Lang.Class({
         if (Main.keyboard.shouldTakeEvent(event))
             return false;
 
+        if (type == Clutter.EventType.KEY_PRESS &&
+            event.get_key_symbol() == Clutter.KEY_Escape) {
+            this.ungrab();
+            return true;
+        }
+
         if (button) {
             // If we have a press event, ignore the next event,
             // which should be a release event.
@@ -334,18 +333,6 @@ const GrabHelper = new Lang.Class({
         return this._modalCount > 0;
     },
 
-    // We catch 'event' rather than 'key-press-event' so that we get
-    // a chance to run before the overview's own Escape check
-    _onEvent: function(actor, event) {
-        if (event.type() == Clutter.EventType.KEY_PRESS &&
-            event.get_key_symbol() == Clutter.KEY_Escape) {
-            this.ungrab();
-            return true;
-        }
-
-        return false;
-    },
-
     _onKeyFocusChanged: function() {
         let focus = global.stage.key_focus;
         if (!focus || !this._isWithinGrabbedActor(focus))



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]