mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-17 23:24:51 +00:00
FdoNotificationDaemon: Emit ActivationToken before ActionInvoked signal
Two years ago FDO notifications spec gained the ability to pass an
activation token (often called startup id) let's finally implement it.
See: b9a470004d
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/358
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3199>
This commit is contained in:
parent
7d6f465a47
commit
bb73bf548c
3 changed files with 24 additions and 0 deletions
|
|
@ -31,5 +31,9 @@
|
|||
<arg type="u"/>
|
||||
<arg type="s"/>
|
||||
</signal>
|
||||
<signal name="ActivationToken">
|
||||
<arg type="u"/>
|
||||
<arg type="s"/>
|
||||
</signal>
|
||||
</interface>
|
||||
</node>
|
||||
|
|
|
|||
|
|
@ -27,6 +27,14 @@ export const NotificationDaemon = class extends ServiceImplementation {
|
|||
log(error.message);
|
||||
});
|
||||
|
||||
this._proxy.connectSignal('ActivationToken',
|
||||
(proxy, sender, params) => {
|
||||
const [id] = params;
|
||||
this._emitSignal(
|
||||
this._activeNotifications.get(id),
|
||||
'ActivationToken',
|
||||
new GLib.Variant('(us)', params));
|
||||
});
|
||||
this._proxy.connectSignal('ActionInvoked',
|
||||
(proxy, sender, params) => {
|
||||
const [id] = params;
|
||||
|
|
|
|||
|
|
@ -217,6 +217,7 @@ class FdoNotificationDaemon {
|
|||
hasDefaultAction = true;
|
||||
} else {
|
||||
notification.addAction(label, () => {
|
||||
this._emitActivationToken(source, ndata.id);
|
||||
this._emitActionInvoked(ndata.id, actionId);
|
||||
});
|
||||
}
|
||||
|
|
@ -225,6 +226,7 @@ class FdoNotificationDaemon {
|
|||
|
||||
if (hasDefaultAction) {
|
||||
notification.connect('activated', () => {
|
||||
this._emitActivationToken(source, ndata.id);
|
||||
this._emitActionInvoked(ndata.id, 'default');
|
||||
});
|
||||
} else {
|
||||
|
|
@ -301,6 +303,16 @@ class FdoNotificationDaemon {
|
|||
this._dbusImpl.emit_signal('ActionInvoked',
|
||||
GLib.Variant.new('(us)', [id, action]));
|
||||
}
|
||||
|
||||
_emitActivationToken(source, id) {
|
||||
const context = global.create_app_launch_context(0, -1);
|
||||
const info = source.app?.get_app_info();
|
||||
if (info) {
|
||||
const token = context.get_startup_notify_id(info, []);
|
||||
this._dbusImpl.emit_signal('ActivationToken',
|
||||
GLib.Variant.new('(us)', [id, token]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const FdoNotificationDaemonSource = GObject.registerClass(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue