grim/pidgin

a0108bfcb108
Parents a836808f9c60
Children 76245ac5cf36
Reference the selection_model in PidginDisplayWindow

Some signals are getting trigged after it was unreffed which was causing
g_warnings about a non-instantiable null.

Testing Done:
Open the program, closed the conversation window, and verified the warning was gone.

Reviewed at https://reviews.imfreedom.org/r/2441/
--- a/pidgin/pidgindisplaywindow.c Tue Jun 13 03:06:51 2023 -0500
+++ b/pidgin/pidgindisplaywindow.c Tue Jun 13 03:08:07 2023 -0500
@@ -391,12 +391,13 @@
* GObject Implementation
*****************************************************************************/
static void
-pidgin_display_window_dispose(GObject *obj) {
+pidgin_display_window_finalize(GObject *obj) {
PidginDisplayWindow *window = PIDGIN_DISPLAY_WINDOW(obj);
g_clear_object(&window->conversation_model);
+ g_clear_object(&window->selection_model);
- G_OBJECT_CLASS(pidgin_display_window_parent_class)->dispose(obj);
+ G_OBJECT_CLASS(pidgin_display_window_parent_class)->finalize(obj);
}
static void
@@ -406,6 +407,12 @@
gtk_widget_init_template(GTK_WIDGET(window));
+ /* Add a reference to the selection model as we use it internally and with
+ * out it we get some weird call backs being called when it's nulled out
+ * during destruction.
+ */
+ g_object_ref(window->selection_model);
+
/* Setup the tree list model. */
tree_model = gtk_tree_list_model_new(window->base_model, FALSE, TRUE,
(GtkTreeListModelCreateModelFunc)pidgin_display_window_create_model,
@@ -437,7 +444,7 @@
GObjectClass *obj_class = G_OBJECT_CLASS(klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
- obj_class->dispose = pidgin_display_window_dispose;
+ obj_class->finalize = pidgin_display_window_finalize;
/**
* PidginDisplayWindow::conversation-switched: