From b57483416e0aea0c8a49a883f77dbcf1db6c2d36 Mon Sep 17 00:00:00 2001 From: Benedikt Heine Date: Wed, 11 Oct 2017 12:40:58 +0200 Subject: [PATCH] Remove command handling from notification_init --- src/dbus.c | 9 +++++++-- src/notification.c | 20 -------------------- src/queues.c | 20 ++++++++++++++++++++ src/queues.h | 1 + 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/dbus.c b/src/dbus.c index 24cc300..50cea59 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -266,13 +266,18 @@ static void on_notify(GDBusConnection *connection, notification_init(n); int id = queues_notification_insert(n, replaces_id); - wake_up(); GVariant *reply = g_variant_new("(u)", id); g_dbus_method_invocation_return_value(invocation, reply); g_dbus_connection_flush(connection, NULL, NULL, NULL); - run(NULL); + // The message got discarded + if (id == 0) { + notification_closed(n, 2); + notification_free(n); + } + + wake_up(); } static void on_close_notification(GDBusConnection *connection, diff --git a/src/notification.c b/src/notification.c index d0269c4..145e0c4 100644 --- a/src/notification.c +++ b/src/notification.c @@ -292,17 +292,6 @@ void notification_init(notification *n) //Prevent undefined behaviour by initialising required fields notification_init_defaults(n); - // TODO: this does not belong into notification_init - if (strcmp("DUNST_COMMAND_PAUSE", n->summary) == 0) { - queues_pause_on(); - return; - } - - if (strcmp("DUNST_COMMAND_RESUME", n->summary) == 0) { - queues_pause_off(); - return; - } - n->script = NULL; n->text_to_render = NULL; @@ -449,15 +438,6 @@ void notification_init(notification *n) n->first_render = true; - /* TODO: this should not be part of notification_init */ - if (strlen(n->msg) == 0) { - queues_notification_close(n, 2); - if (settings.always_run_script) { - notification_run_script(n); - } - printf("skipping notification: %s %s\n", n->body, n->summary); - } - char *tmp = g_strconcat(n->summary, " ", n->body, NULL); char *tmp_urls = extract_urls(tmp); diff --git a/src/queues.c b/src/queues.c index 9b0a5b7..c6316a8 100644 --- a/src/queues.c +++ b/src/queues.c @@ -4,6 +4,8 @@ #include #include +#include +#include #include "dbus.h" #include "notification.h" @@ -52,6 +54,24 @@ unsigned int queues_length_history() int queues_notification_insert(notification *n, int replaces_id) { + /* do not display the message, if the message is empty */ + if (strlen(n->msg) == 0) { + if (settings.always_run_script) { + notification_run_script(n); + } + printf("skipping notification: %s %s\n", n->body, n->summary); + return 0; + } + /* Do not insert the message if it's a command */ + if (strcmp("DUNST_COMMAND_PAUSE", n->summary) == 0) { + pause_displayed = true; + return 0; + } + if (strcmp("DUNST_COMMAND_RESUME", n->summary) == 0) { + pause_displayed = false; + return 0; + } + if (replaces_id == 0) { if (settings.stack_duplicates) { diff --git a/src/queues.h b/src/queues.h index 698eccf..8cec5fc 100644 --- a/src/queues.h +++ b/src/queues.h @@ -37,6 +37,7 @@ unsigned int queues_length_history(); * If replaces_id == 0, n gets occupies a new position * * Returns the assigned notification id + * If returned id == 0, the message was dismissed */ int queues_notification_insert(notification *n, int replaces_id);