Don't reset y position of expanded notifications when updating them
This fixes the problem of chat notifications collapsing and then expanding again when receiving multiple messages in the expanded new notification. https://bugzilla.gnome.org/show_bug.cgi?id=629557
This commit is contained in:
parent
4c449124ee
commit
cb4c2ab824
@ -1500,23 +1500,40 @@ MessageTray.prototype = {
|
|||||||
|
|
||||||
_updateShowingNotification: function() {
|
_updateShowingNotification: function() {
|
||||||
Tweener.removeTweens(this._notificationBin);
|
Tweener.removeTweens(this._notificationBin);
|
||||||
this._tween(this._notificationBin, '_notificationState', State.SHOWN,
|
|
||||||
{ y: 0,
|
// We auto-expand notifications with CRITICAL urgency.
|
||||||
opacity: 255,
|
// We use Tweener.removeTweens() to remove a tween that was hiding the notification we are
|
||||||
|
// updating, in case that notification was in the process of being hidden. However,
|
||||||
|
// Tweener.removeTweens() would also remove a tween that was updating the position of the
|
||||||
|
// notification we are updating, in case that notification was already expanded and its height
|
||||||
|
// changed. Therefore we need to call this._expandNotification() for expanded notifications
|
||||||
|
// to make sure their position is updated.
|
||||||
|
if (this._notification.urgency == Urgency.CRITICAL || this._notification.expanded)
|
||||||
|
this._expandNotification(true);
|
||||||
|
|
||||||
|
// We tween all notifications to full opacity. This ensures that both new notifications and
|
||||||
|
// notifications that might have been in the process of hiding get full opacity.
|
||||||
|
//
|
||||||
|
// We tween any notification showing in the banner mode to banner height (this._notificationBin.y = 0).
|
||||||
|
// This ensures that both new notifications and notifications in the banner mode that might
|
||||||
|
// have been in the process of hiding are shown with the banner height.
|
||||||
|
//
|
||||||
|
// We use this._showNotificationCompleted() onComplete callback to extend the time the updated
|
||||||
|
// notification is being shown.
|
||||||
|
//
|
||||||
|
// We don't set the y parameter for the tween for expanded notifications because
|
||||||
|
// this._expandNotification() will result in getting this._notificationBin.y set to the appropriate
|
||||||
|
// fully expanded value.
|
||||||
|
let tweenParams = { opacity: 255,
|
||||||
time: ANIMATION_TIME,
|
time: ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onComplete: this._showNotificationCompleted,
|
onComplete: this._showNotificationCompleted,
|
||||||
onCompleteScope: this
|
onCompleteScope: this
|
||||||
});
|
};
|
||||||
|
if (!this._notification.expanded)
|
||||||
|
tweenParams.y = 0;
|
||||||
|
|
||||||
// We auto-expand notifications with CRITICAL urgency.
|
this._tween(this._notificationBin, '_notificationState', State.SHOWN, tweenParams);
|
||||||
// We call _expandNotification() again on the notifications that
|
|
||||||
// are expanded in case they were in the process of hiding and need
|
|
||||||
// to re-expand.
|
|
||||||
if (this._notification.urgency == Urgency.CRITICAL || this._notification.expanded)
|
|
||||||
// This will overwrite the y tween, but leave the opacity
|
|
||||||
// tween, and so the onComplete will remain as well.
|
|
||||||
this._expandNotification(true);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_showNotificationCompleted: function() {
|
_showNotificationCompleted: function() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user