messenger-gtk

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

commit 8396bf70ed01484dab4bca01e3acebd9920586d2
parent 9a1631e0c57d9e927e51740a90dc1ebd7300fb71
Author: Jacki <jacki@thejackimonster.de>
Date:   Mon,  8 Jul 2024 17:35:35 +0200

Cleanup discourses of chat during profile cleanup

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

Diffstat:
Msrc/ui/chat_entry.c | 23+++++++++++++++++++++++
1 file changed, 23 insertions(+), 0 deletions(-)

diff --git a/src/ui/chat_entry.c b/src/ui/chat_entry.c @@ -29,9 +29,12 @@ #include "../application.h" #include "../contact.h" +#include "../discourse.h" #include "../ui.h" +#include <glib-2.0/glib.h> #include <gnunet/gnunet_chat_lib.h> +#include <gnunet/gnunet_common.h> #include <gnunet/gnunet_time_lib.h> UI_CHAT_ENTRY_Handle* @@ -239,6 +242,20 @@ ui_chat_entry_update(UI_CHAT_ENTRY_Handle *handle, gtk_list_box_invalidate_sort(app->ui.messenger.chats_listbox); } +static enum GNUNET_GenericReturnValue +_ui_chat_entry_delete_discourses (void *cls, + UNUSED struct GNUNET_CHAT_Context *context, + struct GNUNET_CHAT_Discourse *discourse) +{ + g_assert(discourse); + + if (GNUNET_YES == GNUNET_CHAT_discourse_is_open(discourse)) + GNUNET_CHAT_discourse_close(discourse); + + discourse_destroy_info(discourse); + return GNUNET_YES; +} + void ui_chat_entry_delete(UI_CHAT_ENTRY_Handle *handle) { @@ -246,6 +263,12 @@ ui_chat_entry_delete(UI_CHAT_ENTRY_Handle *handle) ui_chat_delete(handle->chat); + GNUNET_CHAT_context_iterate_discourses( + handle->context, + _ui_chat_entry_delete_discourses, + NULL + ); + g_object_unref(handle->builder); if (handle->update)