Don't process the first click on Activities button for a timeout period after the hot corner was triggered

This avoids opening and closing the overview when the hot corner is triggered
and the activities button is clicked.
This commit is contained in:
Marina Zhurakhinskaya 2009-10-06 16:55:29 -04:00
parent 439daf828f
commit 53d0581377

View File

@ -61,6 +61,7 @@ TRAY_BORDER_COLOR.from_pixel(0x00000033);
const TRAY_CORNER_RADIUS = 5; const TRAY_CORNER_RADIUS = 5;
const TRAY_BORDER_WIDTH = 0; const TRAY_BORDER_WIDTH = 0;
const HOT_CORNER_ACTIVATION_TIMEOUT = 0.5;
function AppPanelMenu() { function AppPanelMenu() {
this._init(); this._init();
@ -290,6 +291,8 @@ Panel.prototype = {
opacity: 0, opacity: 0,
reactive: true }); reactive: true });
this._hotCornerActivationTime = 0;
this._hotCornerEnvirons.connect('leave-event', this._hotCornerEnvirons.connect('leave-event',
Lang.bind(this, this._onHotCornerEnvironsLeft)); Lang.bind(this, this._onHotCornerEnvironsLeft));
// Clicking on the hot corner environs should result in the same bahavior // Clicking on the hot corner environs should result in the same bahavior
@ -404,14 +407,14 @@ Panel.prototype = {
// We get into the Overview mode on button-press-event as opposed to button-release-event because eventually we'll probably // We get into the Overview mode on button-press-event as opposed to button-release-event because eventually we'll probably
// have the Overview act like a menu that allows the user to release the mouse on the activity the user wants // have the Overview act like a menu that allows the user to release the mouse on the activity the user wants
// to switch to. // to switch to.
this.button.actor.connect('button-press-event', function(b, e) { this.button.actor.connect('button-press-event', Lang.bind(this, function(b, e) {
if (e.get_button() == 1 && e.get_click_count() == 1) { if (e.get_button() == 1 && e.get_click_count() == 1 && !Main.overview.animationInProgress) {
Main.overview.toggle(); this._maybeToggleOverviewOnClick();
return true; return true;
} else { } else {
return false; return false;
} }
}); }));
// In addition to pressing the button, the Overview can be entered and exited by other means, such as // In addition to pressing the button, the Overview 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 Overview is entered // pressing the System key, Alt+F1 or Esc. We want the button to be pressed in when the Overview is entered
// and to be released when it is exited regardless of how it was triggered. // and to be released when it is exited regardless of how it was triggered.
@ -477,6 +480,7 @@ Panel.prototype = {
if (!this._hotCornerEntered) { if (!this._hotCornerEntered) {
this._hotCornerEntered = true; this._hotCornerEntered = true;
if (!Main.overview.animationInProgress) { if (!Main.overview.animationInProgress) {
this._hotCornerActivationTime = Date.now() / 1000;
Main.overview.toggle(); Main.overview.toggle();
} }
} }
@ -485,7 +489,7 @@ Panel.prototype = {
_onHotCornerClicked : function() { _onHotCornerClicked : function() {
if (!Main.overview.animationInProgress) { if (!Main.overview.animationInProgress) {
Main.overview.toggle(); this._maybeToggleOverviewOnClick();
} }
return false; return false;
}, },
@ -502,6 +506,15 @@ Panel.prototype = {
this._hotCornerEntered = false; this._hotCornerEntered = false;
} }
return false; return false;
},
// Toggles the overview unless this is the first click on the Activities button within the HOT_CORNER_ACTIVATION_TIMEOUT time
// of the hot corner being triggered. This check avoids opening and closing the overview if the user both triggered the hot corner
// and clicked the Activities button.
_maybeToggleOverviewOnClick: function() {
if (this._hotCornerActivationTime == 0 || Date.now() / 1000 - this._hotCornerActivationTime > HOT_CORNER_ACTIVATION_TIMEOUT)
Main.overview.toggle();
this._hotCornerActivationTime = 0;
} }
}; };