summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorJonathan Blandford <jrb@redhat.com>2002-09-11 19:52:31 +0000
committerJonathan Blandford <jrb@src.gnome.org>2002-09-11 19:52:31 +0000
commite8215b332540323dd3895c15d569e69c51ea462b (patch)
tree21e679acae41b387c9997ea687b79613f662d80a /gtk
parent429409d40f2072be84d41088f1828840480d92c4 (diff)
downloadgtk+-e8215b332540323dd3895c15d569e69c51ea462b.tar.gz
Make GtkTreeRowReference a boxed type.
Wed Sep 11 15:48:38 2002 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreemodel.c (gtk_tree_row_reference_get_type): Make GtkTreeRowReference a boxed type. * gtk/gtkliststore.c (gtk_list_store_finalize): free the root list. * gtk/gtktreestore.c (gtk_tree_store_finalize): free the root nodes.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkliststore.c5
-rw-r--r--gtk/gtktreemodel.c23
-rw-r--r--gtk/gtktreemodel.h2
-rw-r--r--gtk/gtktreestore.c2
4 files changed, 31 insertions, 1 deletions
diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c
index daf4b61988..a8de408c4d 100644
--- a/gtk/gtkliststore.c
+++ b/gtk/gtkliststore.c
@@ -424,7 +424,9 @@ gtk_list_store_finalize (GObject *object)
{
GtkListStore *list_store = GTK_LIST_STORE (object);
- g_list_foreach (list_store->root, (GFunc) _gtk_tree_data_list_free, list_store->column_headers);
+ g_slist_foreach (list_store->root, (GFunc) _gtk_tree_data_list_free, list_store->column_headers);
+ g_slist_free (list_store->root);
+
_gtk_tree_data_list_header_free (list_store->sort_list);
g_free (list_store->column_headers);
@@ -437,6 +439,7 @@ gtk_list_store_finalize (GObject *object)
list_store->default_sort_data = NULL;
}
+ /* must chain up */
(* parent_class->finalize) (object);
}
diff --git a/gtk/gtktreemodel.c b/gtk/gtktreemodel.c
index 842e09c318..f10f97438f 100644
--- a/gtk/gtktreemodel.c
+++ b/gtk/gtktreemodel.c
@@ -1322,6 +1322,20 @@ static void gtk_tree_row_reference_unref_path (GtkTreePath *path,
gint depth);
+GType
+gtk_tree_row_reference_get_type (void)
+{
+ static GType our_type = 0;
+
+ if (our_type == 0)
+ our_type = g_boxed_type_register_static ("GtkTreeRowReference",
+ (GBoxedCopyFunc) gtk_tree_row_reference_copy,
+ (GBoxedFreeFunc) gtk_tree_row_reference_free);
+
+ return our_type;
+}
+
+
#define ROW_REF_DATA_STRING "gtk-tree-row-refs"
struct _GtkTreeRowReference
@@ -1745,6 +1759,15 @@ gtk_tree_row_reference_valid (GtkTreeRowReference *reference)
return TRUE;
}
+
+GtkTreeRowReference *
+gtk_tree_row_reference_copy (GtkTreeRowReference *reference)
+{
+ return gtk_tree_row_reference_new_proxy (reference->proxy,
+ reference->model,
+ reference->path);
+}
+
/**
* gtk_tree_row_reference_free:
* @reference: A #GtkTreeRowReference, or NULL
diff --git a/gtk/gtktreemodel.h b/gtk/gtktreemodel.h
index 4118f48260..ff7d9e8656 100644
--- a/gtk/gtktreemodel.h
+++ b/gtk/gtktreemodel.h
@@ -31,6 +31,7 @@ G_BEGIN_DECLS
#define GTK_TYPE_TREE_ITER (gtk_tree_iter_get_type ())
#define GTK_TYPE_TREE_PATH (gtk_tree_path_get_type ())
+#define GTK_TYPE_TREE_ROW_REFERENCE (gtk_tree_row_reference_get_type ())
typedef struct _GtkTreeIter GtkTreeIter;
typedef struct _GtkTreePath GtkTreePath;
@@ -154,6 +155,7 @@ GtkTreeRowReference *gtk_tree_row_reference_new_proxy (GObject *prox
GtkTreePath *path);
GtkTreePath *gtk_tree_row_reference_get_path (GtkTreeRowReference *reference);
gboolean gtk_tree_row_reference_valid (GtkTreeRowReference *reference);
+GtkTreeRowReference *gtk_tree_row_reference_copy (GtkTreeRowReference *reference);
void gtk_tree_row_reference_free (GtkTreeRowReference *reference);
/* These two functions are only needed if you created the row reference with a
* proxy object */
diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c
index a312462532..37e4835758 100644
--- a/gtk/gtktreestore.c
+++ b/gtk/gtktreestore.c
@@ -447,6 +447,7 @@ gtk_tree_store_finalize (GObject *object)
g_node_traverse (tree_store->root, G_POST_ORDER, G_TRAVERSE_ALL, -1,
node_free, tree_store->column_headers);
+ g_node_destroy (tree_store->root);
_gtk_tree_data_list_header_free (tree_store->sort_list);
g_free (tree_store->column_headers);
@@ -459,6 +460,7 @@ gtk_tree_store_finalize (GObject *object)
tree_store->default_sort_data = NULL;
}
+ /* must chain up */
(* parent_class->finalize) (object);
}