[gnome-shell] Press in the Activities button when the overlay is entered



commit e365a0ba7ab6f5f726d17514caf5dcee2934002e
Author: Marina Zhurakhinskaya <marinaz redhat com>
Date:   Fri May 8 16:27:14 2009 -0400

    Press in the Activities button when the overlay is entered
    
    In addition to pressing the Activities button, the overlay can be entered
    by pressing the System key or Alt+F1. We want the button to look pressed in
    in these cases too.
---
 js/ui/button.js |   19 ++++++++++++++-----
 js/ui/panel.js  |    4 ++++
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/js/ui/button.js b/js/ui/button.js
index 7bbf2c0..0bb4146 100644
--- a/js/ui/button.js
+++ b/js/ui/button.js
@@ -25,15 +25,17 @@ Button.prototype = {
         if (pressedButtonColor == null)
             this._pressedButtonColor = DEFAULT_PRESSED_BUTTON_COLOR;
 
+        this._staysPressed = staysPressed
         if (staysPressed == null)
-            staysPressed = false;
+            this._staysPressed = false;
+
         if (minWidth == null)
             minWidth = 0;
         if (minHeight == null)
             minHeight = 0;
 
-        // if staysPressed is true, this.active will be true past the first release of a button, untill a subsequent one (the button
-        // is unpressed) or untill release() is called explicitly
+        // if this._staysPressed is true, this._active will be true past the first release of a button, until a subsequent one (the button
+        // is unpressed) or until release() is called explicitly
         this._active = false;
         this._isBetweenPressAndRelease = false;
         this._mouseIsOverButton = false;
@@ -66,7 +68,7 @@ Button.prototype = {
         this.button.connect('button-release-event',
             function(o, event) {
                 me._isBetweenPressAndRelease = false;
-                if (!staysPressed || me._active) {
+                if (!me._staysPressed || me._active) {
                     me.release();
                 } else {
                     me._active = true;
@@ -92,8 +94,15 @@ Button.prototype = {
             });
     },
 
+    pressIn : function() {
+        if (!this._isBetweenPressAndRelease && this._staysPressed) {
+            this._active = true;
+            this.button.backgroundColor = this._pressedButtonColor;
+        }
+    },
+
     release : function() {
-        if (!this._isBetweenPressAndRelease) {
+        if (!this._isBetweenPressAndRelease && this._staysPressed) {
             this._active = false;
             if (this._mouseIsOverButton) {
                 this.button.backgroundColor = this._buttonColor;
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 6084a50..cd8d435 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -151,6 +151,10 @@ Panel.prototype = {
         // to switch to.
         this.button.button.connect('button-press-event',
                                    Lang.bind(Main.overlay, Main.overlay.toggle));
+        // In addition to pressing the button, the overlay can be entered and exited by other means, such as
+        // pressing the System key, Alt+F1 or Esc. We want the button to be pressed in when the overlay is entered
+        // and to be released when it is exited regardless of how it was triggered.
+        Main.overlay.connect('showing', Lang.bind(this.button, this.button.pressIn));
         Main.overlay.connect('hiding', Lang.bind(this.button, this.button.release));
 
         this.actor.add_actor(box);



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