[gnome-shell] Enable hot corner for triggering the overview mode



commit ccafa53bd62a63d81adc20f554518ac2a6019204
Author: Marina Zhurakhinskaya <marinaz redhat com>
Date:   Fri Aug 7 16:45:35 2009 -0400

    Enable hot corner for triggering the overview mode
    
    Use the 1x1 actor in the top left corner of the screen to enter and leave
    the overview mode by just moving the mouse over to it.
    
    No delay is used for triggering the hot corner because a delay significant
    enough to allow moving away the mouse to avoid triggering it ruins the desired
    flow when triggering the hot corner is actually intended.
    
    The hot corner is not enabled in the full screen mode because the application
    or the virtual system might have a hot corner of its own in that place.

 js/ui/panel.js |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)
---
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 6c432f6..d8ac1ac 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -76,6 +76,22 @@ Panel.prototype = {
 
         box.append(this.button.button, Big.BoxPackFlags.NONE);
 
+        let hotCorner = new Clutter.Rectangle({ width: 1,
+                                                height: 1,
+                                                opacity: 0,
+                                                reactive: true });
+
+        // In addition to being triggered by the mouse enter event, the hot corner
+        // can be triggered by clicking on it. This is useful if the user wants to 
+        // immediately undo the effect of triggering the hot corner once in the 
+        // hot corner.
+        hotCorner.connect('enter-event',
+                           Lang.bind(this, this._onHotCornerTriggered));
+        hotCorner.connect('button-release-event',
+                           Lang.bind(this, this._onHotCornerTriggered));
+
+        box.add_actor(hotCorner);
+
         let statusbox = new Big.Box();
         let statusmenu = this._statusmenu = new Shell.StatusMenu();
         statusmenu.get_icon().hide();
@@ -201,5 +217,10 @@ Panel.prototype = {
         this._clock.set_text(displayDate.toLocaleFormat("%a %l:%M %p"));
         Mainloop.timeout_add(msecRemaining, Lang.bind(this, this._updateClock));
         return false;
-    }
+    },
+
+    _onHotCornerTriggered : function() {
+        Main.overlay.toggle();
+        return false;
+     }
 };



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