qulogic/pidgin

Fix opening of conversations

3 months ago, Gary Kramlich
7bde7363e0f3
Parents 05f7fd3db190
Children dcdf8a9a686b
Fix opening of conversations

This was broken when gtkconv.[ch] was removed and the create_conversation uiop
implementation with it.

Testing Done:
Opened an IM and a Channel and sent messages.

Reviewed at https://reviews.imfreedom.org/r/2903/
--- a/pidgin/pidgindisplaywindow.c Sun Dec 31 21:59:37 2023 -0600
+++ b/pidgin/pidgindisplaywindow.c Sun Dec 31 22:01:13 2023 -0600
@@ -290,6 +290,26 @@
}
}
+static void
+pidgin_display_window_conversation_registered_cb(G_GNUC_UNUSED PurpleConversationManager *manager,
+ PurpleConversation *conversation,
+ gpointer data)
+{
+ PidginDisplayWindow *window = data;
+
+ pidgin_display_window_add(window, conversation);
+}
+
+static void
+pidgin_display_window_conversation_unregistered_cb(G_GNUC_UNUSED PurpleConversationManager *manager,
+ PurpleConversation *conversation,
+ gpointer data)
+{
+ PidginDisplayWindow *window = data;
+
+ pidgin_display_window_remove(window, conversation);
+}
+
/******************************************************************************
* GObject Implementation
*****************************************************************************/
@@ -397,9 +417,19 @@
GtkWidget *
pidgin_display_window_get_default(void) {
if(!GTK_IS_WIDGET(default_window)) {
+ PurpleConversationManager *manager = NULL;
+
default_window = pidgin_display_window_new();
g_object_add_weak_pointer(G_OBJECT(default_window),
(gpointer)&default_window);
+
+ manager = purple_conversation_manager_get_default();
+ g_signal_connect_object(manager, "registered",
+ G_CALLBACK(pidgin_display_window_conversation_registered_cb),
+ default_window, 0);
+ g_signal_connect_object(manager, "unregistered",
+ G_CALLBACK(pidgin_display_window_conversation_unregistered_cb),
+ default_window, 0);
}
return default_window;