messenger-gtk

Gtk+3 graphical user interfaces for GNUnet Messenger
Log | Files | Refs | Submodules | README | LICENSE

commit d1f4844fba95d62806931cdd5930b692379e793b
parent 1b13bf347e3b7db242164efacaf7ac6943bcf50a
Author: Jacki <jacki@thejackimonster.de>
Date:   Fri,  2 Feb 2024 01:54:41 +0100

Update tagged messages

Signed-off-by: Jacki <jacki@thejackimonster.de>

Diffstat:
Msrc/chat/messenger.c | 10++++++++++
Msrc/event.c | 28++++++++++++++++++++++++++++
Msrc/event.h | 13+++++++++++++
3 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/src/chat/messenger.c b/src/chat/messenger.c @@ -176,6 +176,16 @@ _chat_messenger_message(void *cls, ); break; } + case GNUNET_CHAT_KIND_TAG: + { + application_call_message_event( + app, + event_tag_message, + context, + message + ); + break; + } default: break; } diff --git a/src/event.c b/src/event.c @@ -712,3 +712,31 @@ event_delete_message(MESSENGER_Application *app, enqueue_chat_entry_update(handle); } + +void +event_tag_message(MESSENGER_Application *app, + struct GNUNET_CHAT_Context *context, + const struct GNUNET_CHAT_Message *msg) +{ + UI_CHAT_ENTRY_Handle *handle = GNUNET_CHAT_context_get_user_pointer(context); + + if ((!handle) || (!(handle->chat))) + return; + + GList *messages = handle->chat->messages; + + while (messages) + { + UI_MESSAGE_Handle *message = (UI_MESSAGE_Handle*) (messages->data); + + if ((message) && (message->msg == GNUNET_CHAT_message_get_target(msg))) + { + ui_message_update(message, app, message->msg); + break; + } + + messages = messages->next; + } + + enqueue_chat_entry_update(handle); +} diff --git a/src/event.h b/src/event.h @@ -140,4 +140,17 @@ event_delete_message(MESSENGER_Application *app, struct GNUNET_CHAT_Context *context, const struct GNUNET_CHAT_Message *msg); +/** + * Event for the UI to be called whenever a message + * gets tagged in a given context. + * + * @param app Messenger application + * @param context Chat context + * @param msg Tag message + */ +void +event_tag_message(MESSENGER_Application *app, + struct GNUNET_CHAT_Context *context, + const struct GNUNET_CHAT_Message *msg); + #endif /* EVENT_H_ */