From e365a0ba7ab6f5f726d17514caf5dcee2934002e Mon Sep 17 00:00:00 2001 From: Marina Zhurakhinskaya Date: Fri, 8 May 2009 16:27:14 -0400 Subject: [PATCH] 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 7bbf2c05f..0bb4146a2 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 6084a50dd..cd8d43515 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);