Revert "Special-handle Empathy to have multiple sources and to queue notifications"
This reverts commit bb0a977edc
.
https://bugzilla.gnome.org/show_bug.cgi?id=608999
This commit is contained in:
parent
439203349d
commit
5ab852bfa3
@ -329,7 +329,6 @@ Source.prototype = {
|
|||||||
this.text = null;
|
this.text = null;
|
||||||
if (createIcon)
|
if (createIcon)
|
||||||
this.createIcon = createIcon;
|
this.createIcon = createIcon;
|
||||||
this.handleReplacing = true;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// This can be overridden by a subclass, or by the createIcon
|
// This can be overridden by a subclass, or by the createIcon
|
||||||
@ -565,7 +564,7 @@ MessageTray.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onNotify: function(source, notification) {
|
_onNotify: function(source, notification) {
|
||||||
if (!notification.source.handleReplacing || this._getNotification(notification.id, source) == null) {
|
if (this._getNotification(notification.id, source) == null) {
|
||||||
notification.connect('destroy',
|
notification.connect('destroy',
|
||||||
Lang.bind(this, this.removeNotification));
|
Lang.bind(this, this.removeNotification));
|
||||||
this._notificationQueue.push(notification);
|
this._notificationQueue.push(notification);
|
||||||
|
@ -11,8 +11,6 @@ const Main = imports.ui.main;
|
|||||||
const MessageTray = imports.ui.messageTray;
|
const MessageTray = imports.ui.messageTray;
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
|
|
||||||
const EMPATHY = 'Empathy';
|
|
||||||
|
|
||||||
let nextNotificationId = 1;
|
let nextNotificationId = 1;
|
||||||
|
|
||||||
// Should really be defined in dbus.js
|
// Should really be defined in dbus.js
|
||||||
@ -139,46 +137,13 @@ NotificationDaemon.prototype = {
|
|||||||
|
|
||||||
Notify: function(appName, replacesId, icon, summary, body,
|
Notify: function(appName, replacesId, icon, summary, body,
|
||||||
actions, hints, timeout) {
|
actions, hints, timeout) {
|
||||||
let notification, id;
|
let source = Main.messageTray.getSource(this._sourceId(appName));
|
||||||
// We associate each application with a source and set the source id to be based on
|
let id = null;
|
||||||
// the appName. We support application updates by creating a new Notification object
|
|
||||||
// only if replacesId was not specified or if we no longer have the notification with
|
|
||||||
// the specified replacesId.
|
|
||||||
//
|
|
||||||
// We are planning to add Empathy-specific features in the message tray, but in the
|
|
||||||
// meantime we handle Empathy notifications received through the notification daemon
|
|
||||||
// differently from other notifications.
|
|
||||||
// 1) We display different people sending messages as different sources. So we use
|
|
||||||
// notification id instead of the appName when creating id for the source.
|
|
||||||
// 2) We queue notification with different messages to show them one after another,
|
|
||||||
// rather than replace the notification on the spot. So we create a new Notification
|
|
||||||
// object each time, disregarding the fact that we might already have another
|
|
||||||
// notification with the same replacesId.
|
|
||||||
// Empathy uses replacesId for all the notifications from the same window until the
|
|
||||||
// notification with that id is dismissed. Notifications from different people in
|
|
||||||
// different tabs have the same replacesId. So while being closer to the eventual design,
|
|
||||||
// our special-handling of Empathy notifications is somewhat buggy. The user might end up
|
|
||||||
// with multiple icons for the same person if the user dismisses the window for that person
|
|
||||||
// (which doesn't result in removing the icon) or the user might not get the icon for
|
|
||||||
// the person after a new notification in one of the tabs of the chat window for which
|
|
||||||
// another person's icon is already displayed.
|
|
||||||
|
|
||||||
let isEmpathy = appName == EMPATHY;
|
|
||||||
if (replacesId != 0) {
|
|
||||||
id = replacesId;
|
|
||||||
if (!isEmpathy)
|
|
||||||
notification = this._currentNotifications[id];
|
|
||||||
} else {
|
|
||||||
id = nextNotificationId++;
|
|
||||||
}
|
|
||||||
|
|
||||||
let sourceId = this._sourceId(isEmpathy ? id : appName);
|
|
||||||
let source = Main.messageTray.getSource(sourceId);
|
|
||||||
|
|
||||||
// Source may be null if we have never received a notification from
|
// Source may be null if we have never received a notification from
|
||||||
// this app or if all notifications from this app have been acknowledged.
|
// this app or if all notifications from this app have been acknowledged.
|
||||||
if (source == null) {
|
if (source == null) {
|
||||||
source = new Source(sourceId, icon, hints);
|
source = new Source(this._sourceId(appName), icon, hints);
|
||||||
Main.messageTray.add(source);
|
Main.messageTray.add(source);
|
||||||
|
|
||||||
source.connect('clicked', Lang.bind(this,
|
source.connect('clicked', Lang.bind(this,
|
||||||
@ -208,14 +173,15 @@ NotificationDaemon.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let notification;
|
||||||
|
if (replacesId != 0) {
|
||||||
|
id = replacesId;
|
||||||
|
notification = this._currentNotifications[id];
|
||||||
|
}
|
||||||
|
|
||||||
if (notification == null) {
|
if (notification == null) {
|
||||||
|
id = nextNotificationId++;
|
||||||
notification = new MessageTray.Notification(id, source, summary, body, true);
|
notification = new MessageTray.Notification(id, source, summary, body, true);
|
||||||
// This will result in us keeping only the latest Empathy notification with the given
|
|
||||||
// id in this._currentNotifications, which will only affect not being able to close all
|
|
||||||
// the Empathy notifications with a given id in CloseNotification(). Since this not a
|
|
||||||
// a likely scenario and this special-casing of Empathy in the notification daemon is
|
|
||||||
// temporary, it doesn't seem worthwhile to change this._currentNotifications to
|
|
||||||
// {id, [array of notifications]} just for that case.
|
|
||||||
this._currentNotifications[id] = notification;
|
this._currentNotifications[id] = notification;
|
||||||
notification.connect('dismissed', Lang.bind(this,
|
notification.connect('dismissed', Lang.bind(this,
|
||||||
function(n) {
|
function(n) {
|
||||||
@ -359,9 +325,6 @@ Source.prototype = {
|
|||||||
this.app = app;
|
this.app = app;
|
||||||
if (this._openAppRequested)
|
if (this._openAppRequested)
|
||||||
this.openApp();
|
this.openApp();
|
||||||
|
|
||||||
if (app.get_name() == EMPATHY)
|
|
||||||
this.handleReplacing = false;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
openApp: function() {
|
openApp: function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user