From 659130856cdea394c3b51c88ccd3fda78e770dd2 Mon Sep 17 00:00:00 2001 From: Marina Zhurakhinskaya Date: Sat, 26 Mar 2011 03:25:25 -0400 Subject: [PATCH] Hide summary box pointer without animating if it is empty This ensures that we don't show a small black blob fading away when the user clicks on the notification and it is removed. Set HIDING state right away in _hideSummaryBoxPointer() so that it is only called once. Update this._pointerInTray when the tray is unlocked, so that we are not dependent on escapeTray() being triggered by 'done-displaying-content' signal. https://bugzilla.gnome.org/show_bug.cgi?id=645697 --- js/ui/messageTray.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index fa965262c..64a4fb322 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1417,6 +1417,7 @@ MessageTray.prototype = { if (!this._locked) return; this._locked = false; + this._pointerInTray = this.actor.hover && !this._summaryBoxPointer.bin.hover; this._updateState(); }, @@ -2106,13 +2107,18 @@ MessageTray.prototype = { }, _hideSummaryBoxPointer: function() { + this._summaryBoxPointerState = State.HIDING; // Unset this._clickedSummaryItem if we are no longer showing the summary if (this._summaryState != State.SHOWN) this._unsetClickedSummaryItem(); this._focusGrabber.ungrabFocus(); - this._summaryBoxPointerState = State.HIDING; - this._summaryBoxPointer.hide(true, Lang.bind(this, this._hideSummaryBoxPointerCompleted)); + if (this._summaryBoxPointerItem.source.notifications.length == 0) { + this._summaryBoxPointer.actor.hide(); + this._hideSummaryBoxPointerCompleted(); + } else { + this._summaryBoxPointer.hide(true, Lang.bind(this, this._hideSummaryBoxPointerCompleted)); + } }, _hideSummaryBoxPointerCompleted: function() {