[gnome-shell] messageTray: Remove the stackedNotification tracking complexity
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] messageTray: Remove the stackedNotification tracking complexity
- Date: Fri, 16 Aug 2013 02:12:55 +0000 (UTC)
commit de050991d45b588da0ac1fdedc1e63512f2cbfa8
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Fri Aug 2 00:18:55 2013 -0400
messageTray: Remove the stackedNotification tracking complexity
We only have one signal left to track, but since it's destroy it
doesn't matter if it's disconnected or not since it will eventually
be GC'd.
js/ui/messageTray.js | 56 +++++++++++++------------------------------------
1 files changed, 15 insertions(+), 41 deletions(-)
---
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 5aee7c3..5ae0771 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -1448,25 +1448,17 @@ const SummaryItem = new Lang.Class({
if (this.notificationStack.get_n_children() > 0)
return;
- for (let i = 0; i < this.source.notifications.length; i++) {
- this._appendNotificationToStack(this.source.notifications[i]);
- }
-
+ this.source.notifications.forEach(Lang.bind(this, this._appendNotificationToStack));
this.scrollTo(St.Side.BOTTOM);
},
doneShowingNotificationStack: function() {
- for (let i = 0; i < this._stackedNotifications.length; i++) {
- let stackedNotification = this._stackedNotifications[i];
- let notification = stackedNotification.notification;
+ this.source.notifications.forEach(Lang.bind(this, function(notification) {
notification.collapseCompleted();
- notification.disconnect(stackedNotification.notificationDestroyedId);
- if (notification.actor.get_parent() == this.notificationStack)
- this.notificationStack.remove_actor(notification.actor);
notification.setIconVisible(true);
notification.enableScrolling(true);
- }
- this._stackedNotifications = [];
+ this.notificationStack.remove_actor(notification.actor);
+ }));
},
_notificationAddedToSource: function(source, notification) {
@@ -1474,17 +1466,21 @@ const SummaryItem = new Lang.Class({
this._appendNotificationToStack(notification);
},
+ _contentUpdated: function() {
+ this.source.notifications.forEach(function(notification, i) {
+ notification.setIconVisible(i == 0);
+ });
+
+ this.emit('content-updated');
+ },
+
_appendNotificationToStack: function(notification) {
- let stackedNotification = {};
- stackedNotification.notification = notification;
- stackedNotification.notificationDestroyedId = notification.connect('destroy', Lang.bind(this,
this._notificationDestroyed));
- this._stackedNotifications.push(stackedNotification);
+ notification.connect('destroy', Lang.bind(this, this._contentUpdated));
if (!this.source.isChat)
notification.enableScrolling(false);
- if (this.notificationStack.get_n_children() > 0)
- notification.setIconVisible(false);
- this.notificationStack.add(notification.actor);
notification.expand(false);
+ this.notificationStack.add(notification.actor);
+ this._contentUpdated();
},
// scrollTo:
@@ -1498,28 +1494,6 @@ const SummaryItem = new Lang.Class({
else if (side == St.Side.BOTTOM)
adjustment.value = adjustment.upper;
},
-
- _contentUpdated: function() {
- this.emit('content-updated');
- },
-
- _notificationDestroyed: function(notification) {
- for (let i = 0; i < this._stackedNotifications.length; i++) {
- if (this._stackedNotifications[i].notification == notification) {
- let stackedNotification = this._stackedNotifications[i];
- notification.disconnect(stackedNotification.notificationDestroyedId);
- this._stackedNotifications.splice(i, 1);
- if (notification.actor.get_parent() == this.notificationStack)
- this.notificationStack.remove_actor(notification.actor);
- this._contentUpdated();
- break;
- }
- }
-
- let firstNotification = this._stackedNotifications[0];
- if (firstNotification)
- firstNotification.notification.setIconVisible(true);
- }
});
Signals.addSignalMethods(SummaryItem.prototype);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]