diff -Nru gnome-shell-3.6.2/debian/changelog gnome-shell-3.6.2/debian/changelog --- gnome-shell-3.6.2/debian/changelog 2012-12-18 22:39:02.000000000 +1100 +++ gnome-shell-3.6.2/debian/changelog 2013-01-31 14:54:01.000000000 +1100 @@ -1,3 +1,10 @@ +gnome-shell (3.6.2-0ubuntu5) raring; urgency=low + + * Upstream bugfix for disappearing notifications (LP: #1088759) + debian/patches/git_messagetray_hideNotification_.patch + + -- Tim Lunn Thu, 31 Jan 2013 14:53:11 +1100 + gnome-shell (3.6.2-0ubuntu4) raring; urgency=low * Upstream bugfix for disappearing notifications (LP: #1088759) diff -Nru gnome-shell-3.6.2/debian/patches/git_messagetray_hideNotification.patch gnome-shell-3.6.2/debian/patches/git_messagetray_hideNotification.patch --- gnome-shell-3.6.2/debian/patches/git_messagetray_hideNotification.patch 1970-01-01 10:00:00.000000000 +1000 +++ gnome-shell-3.6.2/debian/patches/git_messagetray_hideNotification.patch 2013-01-31 14:52:57.000000000 +1100 @@ -0,0 +1,56 @@ +From 1fa2447541875b2b30fd4442d8190b147e28b5b2 Mon Sep 17 00:00:00 2001 +From: Giovanni Campagna +Date: Sat, 22 Dec 2012 16:02:19 +0100 +Subject: [PATCH] MessageTray: fix reentrancy problem in + hideNotificationCompleted + +Hiding notificationWidget with a telepathy notification causes +unfocused to be emitted, which causes a reentrant updateState. +If another notification is queued, it is shown before the old +one is cleared. + +https://bugzilla.gnome.org/show_bug.cgi?id=683986 +--- + js/ui/messageTray.js | 17 ++++++++++------- + 1 file changed, 10 insertions(+), 7 deletions(-) + +--- a/js/ui/messageTray.js ++++ b/js/ui/messageTray.js +@@ -2171,7 +2171,7 @@ + Lang.bind(this, this._onIdleMonitorWatch)); + this._notificationClickedId = this._notification.connect('done-displaying', + Lang.bind(this, this._escapeTray)); +- this._notification.connect('unfocused', Lang.bind(this, function() { ++ this._notificationUnfocusedId = this._notification.connect('unfocused', Lang.bind(this, function() { + this._updateState(); + })); + this._notificationBin.child = this._notification.actor; +@@ -2293,19 +2293,22 @@ + }, + + _hideNotificationCompleted: function() { +- this._notificationRemoved = false; +- this._notificationWidget.hide(); +- this._closeButton.hide(); +- this._pointerInTray = false; +- this.actor.hover = false; // Clutter doesn't emit notify::hover when actors move +- this._notificationBin.child = null; + this._notification.collapseCompleted(); + this._notification.disconnect(this._notificationClickedId); + this._notificationClickedId = 0; ++ this._notification.disconnect(this._notificationUnfocusedId); ++ this._notificationUnfocusedId = 0; + let notification = this._notification; + this._notification = null; + if (notification.isTransient) + notification.destroy(NotificationDestroyedReason.EXPIRED); ++ ++ this._notificationRemoved = false; ++ this._closeButton.hide(); ++ this._pointerInTray = false; ++ this.actor.hover = false; // Clutter doesn't emit notify::hover when actors move ++ this._notificationBin.child = null; ++ this._notificationWidget.hide(); + }, + + _expandNotification: function(autoExpanding) { diff -Nru gnome-shell-3.6.2/debian/patches/series gnome-shell-3.6.2/debian/patches/series --- gnome-shell-3.6.2/debian/patches/series 2012-12-18 22:39:02.000000000 +1100 +++ gnome-shell-3.6.2/debian/patches/series 2013-01-31 14:52:34.000000000 +1100 @@ -9,3 +9,4 @@ git_messagetray_opacity_fix.patch git_messagetray_remove_tweens.patch git_messagetray_fix_expansion.patch +git_messagetray_hideNotification.patch