From ccafa53bd62a63d81adc20f554518ac2a6019204 Mon Sep 17 00:00:00 2001 From: Marina Zhurakhinskaya Date: Fri, 7 Aug 2009 16:45:35 -0400 Subject: [PATCH] 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 file changed, 22 insertions(+), 1 deletion(-) diff --git a/js/ui/panel.js b/js/ui/panel.js index 6c432f644..d8ac1ac6e 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; + } };