panel: fix app menu visibility after quick overview visit

If you left the overview immediately after entering it (either
intentionally or due to a bug), the app menu would mistakenly end up
hidden due to flaky interaction between its show() and hide() methods.

Based on a patch by Dan Winship <danw@gnome.org>

https://bugzilla.gnome.org/show_bug.cgi?id=641117
This commit is contained in:
Owen W. Taylor 2011-02-16 15:17:46 -05:00
parent 0ef3f999d2
commit 43961aaca5

View File

@ -220,7 +220,7 @@ AppMenuButton.prototype = {
this._visible = !Main.overview.visible; this._visible = !Main.overview.visible;
if (!this._visible) if (!this._visible)
this.hide(); this.actor.hide();
Main.overview.connect('hiding', Lang.bind(this, function () { Main.overview.connect('hiding', Lang.bind(this, function () {
this.show(); this.show();
})); }));
@ -255,28 +255,27 @@ AppMenuButton.prototype = {
if (this._visible) if (this._visible)
return; return;
this._visible = true;
this.actor.show(); this.actor.show();
Tweener.removeTweens(this.actor);
Tweener.addTween(this.actor, Tweener.addTween(this.actor,
{ opacity: 255, { opacity: 255,
time: Overview.ANIMATION_TIME, time: Overview.ANIMATION_TIME,
transition: 'easeOutQuad', transition: 'easeOutQuad' });
onComplete: function() {
this._visible = true;
},
onCompleteScope: this });
}, },
hide: function() { hide: function() {
if (!this._visible) if (!this._visible)
return; return;
this._visible = false;
Tweener.removeTweens(this.actor);
Tweener.addTween(this.actor, Tweener.addTween(this.actor,
{ opacity: 0, { opacity: 0,
time: Overview.ANIMATION_TIME, time: Overview.ANIMATION_TIME,
transition: 'easeOutQuad', transition: 'easeOutQuad',
onComplete: function() { onComplete: function() {
this.actor.hide(); this.actor.hide();
this._visible = false;
}, },
onCompleteScope: this }); onCompleteScope: this });
}, },