PsppireAcr retains a pointer to the GtkListStore inside it but it
didn't, until now, keep a reference to it. This commit makes
PsppireAcr retain a reference, documents the interface, and updates
callers to properly maintain reference counts.
G_TYPE_DOUBLE);
psppire_acr_set_model (PSPPIRE_ACR (fd.summary_acr), list);
G_TYPE_DOUBLE);
psppire_acr_set_model (PSPPIRE_ACR (fd.summary_acr), list);
psppire_acr_set_get_value_func (PSPPIRE_ACR (fd.summary_acr),
get_summary_spec, &fd);
psppire_acr_set_get_value_func (PSPPIRE_ACR (fd.summary_acr),
get_summary_spec, &fd);
+ g_object_unref (csd.expected_list);
/* PSPPIRE - a graphical user interface for PSPP.
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "psppire-acr.h"
#include "helper.h"
#include "psppire-acr.h"
#include "helper.h"
-static void psppire_acr_init (PsppireAcr *);
+G_DEFINE_TYPE (PsppireAcr, psppire_acr, GTK_TYPE_HBOX);
-GType
-psppire_acr_get_type (void)
+static void
+psppire_acr_dispose (GObject *obj)
- static GType acr_type = 0;
-
- if (!acr_type)
- {
- static const GTypeInfo acr_info =
- {
- sizeof (PsppireAcrClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- NULL, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (PsppireAcr),
- 0,
- (GInstanceInitFunc) psppire_acr_init,
- };
-
- acr_type = g_type_register_static (GTK_TYPE_HBOX, "PsppireAcr",
- &acr_info, 0);
- }
+ PsppireAcr *acr = PSPPIRE_ACR (obj);
+ psppire_acr_set_model (acr, NULL);
+ G_OBJECT_CLASS (psppire_acr_parent_class)->dispose (obj);
+static void
+psppire_acr_class_init (PsppireAcrClass *class)
+{
+ G_OBJECT_CLASS (class)->dispose = psppire_acr_dispose;
+}
static gboolean row_is_selected (const PsppireAcr *acr);
static gboolean row_is_selected (const PsppireAcr *acr);
-/* Set the widget's treemodel */
+/* Set the widget's treemodel to LISTSTORE. LISTSTORE ownership is not
+ transferred. */
void
psppire_acr_set_model (PsppireAcr *acr, GtkListStore *liststore)
{
void
psppire_acr_set_model (PsppireAcr *acr, GtkListStore *liststore)
{
+ if (acr->list_store)
+ g_object_unref (acr->list_store);
+ if (liststore)
+ g_object_ref (liststore);
+
acr->list_store = liststore;
gtk_tree_view_set_model (GTK_TREE_VIEW (acr->tv),
acr->list_store = liststore;
gtk_tree_view_set_model (GTK_TREE_VIEW (acr->tv),