aboutsummaryrefslogtreecommitdiff
path: root/libmessaging-menu
diff options
context:
space:
mode:
authorLars Uebernickel <lars.uebernickel@canonical.com>2012-11-27 16:40:38 +0100
committerLars Uebernickel <lars.uebernickel@canonical.com>2012-11-27 16:40:38 +0100
commitced173aa7ea78c76922e07c84743d5b7f76c265e (patch)
tree1c44116185a323a439f43899d52b3e06bc3460d7 /libmessaging-menu
parent7c7c408e9fe4e1cddedae9a6882c714ac3e161d3 (diff)
downloadayatana-indicator-messages-ced173aa7ea78c76922e07c84743d5b7f76c265e.tar.gz
ayatana-indicator-messages-ced173aa7ea78c76922e07c84743d5b7f76c265e.tar.bz2
ayatana-indicator-messages-ced173aa7ea78c76922e07c84743d5b7f76c265e.zip
Pass message action and its parameter through to the application
Diffstat (limited to 'libmessaging-menu')
-rw-r--r--libmessaging-menu/messaging-menu-app.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/libmessaging-menu/messaging-menu-app.c b/libmessaging-menu/messaging-menu-app.c
index cea0eb9..8b9f76b 100644
--- a/libmessaging-menu/messaging-menu-app.c
+++ b/libmessaging-menu/messaging-menu-app.c
@@ -546,6 +546,8 @@ static gboolean
messaging_menu_app_activate_message (IndicatorMessagesApplication *app_interface,
GDBusMethodInvocation *invocation,
const gchar *message_id,
+ const gchar *action_id,
+ GVariant *params,
gpointer user_data)
{
MessagingMenuApp *app = user_data;
@@ -554,7 +556,26 @@ messaging_menu_app_activate_message (IndicatorMessagesApplication *app_interface
msg = g_hash_table_lookup (app->messages, message_id);
if (msg)
{
- g_signal_emit_by_name (msg, "activate", NULL, NULL);
+ if (*action_id)
+ {
+ gchar *signal;
+
+ signal = g_strconcat ("activate::", action_id, NULL);
+
+ if (g_variant_n_children (params))
+ {
+ GVariant *param = g_variant_get_child_value (params, 0);
+ g_signal_emit_by_name (msg, signal, action_id, param);
+ g_variant_unref (param);
+ }
+ else
+ g_signal_emit_by_name (msg, signal, action_id, NULL);
+
+ g_free (signal);
+ }
+ else
+ g_signal_emit_by_name (msg, "activate", NULL, NULL);
+
/* Activate implies removing the message, no need for MessageRemoved */
messaging_menu_app_remove_message_internal (app, message_id);