summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorJonathan Blandford <jrb@redhat.com>2000-10-27 23:34:58 +0000
committerJonathan Blandford <jrb@src.gnome.org>2000-10-27 23:34:58 +0000
commit0ccb3e9aed43a9c2a8b77f7af5c29f4e23b4698d (patch)
treea01d83d5374da6025125c53fd36aefb4396a2556 /gtk
parent2bf87de4cb334a850aa2226b9118b302140f71e2 (diff)
downloadgdk-pixbuf-0ccb3e9aed43a9c2a8b77f7af5c29f4e23b4698d.tar.gz
Not sure how this ever worked. Fixed it to use new iter stuff, and added
Fri Oct 27 17:56:26 2000 Jonathan Blandford <jrb@redhat.com> * gtk/gtkliststore.c: Not sure how this ever worked. Fixed it to use new iter stuff, and added all the appropriate signals et al. * gtk/gtktreedatalist.h: s/gtk/_gtk to further reinforce that this code is internal to gtk only.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkliststore.c445
-rw-r--r--gtk/gtkliststore.h77
-rw-r--r--gtk/gtkmarshal.list3
-rw-r--r--gtk/gtkmarshalers.list3
-rw-r--r--gtk/gtkmodelsimple.c296
-rw-r--r--gtk/gtkmodelsimple.h46
-rw-r--r--gtk/gtktreedatalist.c38
-rw-r--r--gtk/gtktreedatalist.h22
-rw-r--r--gtk/gtktreemodel.c72
-rw-r--r--gtk/gtktreemodel.h12
-rw-r--r--gtk/gtktreestore.c138
-rw-r--r--gtk/gtktreestore.h105
-rw-r--r--gtk/gtktreeview.c16
-rw-r--r--gtk/gtktreeviewcolumn.c7
-rw-r--r--gtk/treestoretest.c87
15 files changed, 783 insertions, 584 deletions
diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c
index dae38c6f2..032241cf3 100644
--- a/gtk/gtkliststore.c
+++ b/gtk/gtkliststore.c
@@ -24,7 +24,7 @@
#include "gtksignal.h"
#define G_SLIST(x) ((GSList *) x)
-#if 0
+
enum {
CHANGED,
INSERTED,
@@ -35,31 +35,35 @@ enum {
static guint list_store_signals[LAST_SIGNAL] = { 0 };
-static void gtk_list_store_init (GtkListStore *list_store);
-static void gtk_list_store_class_init (GtkListStoreClass *class);
-static void gtk_list_store_tree_model_init (GtkTreeModelIface *iface);
-static gint gtk_list_store_get_n_columns (GtkTreeModel *tree_model);
-static GtkTreeIter *gtk_list_store_get_iter (GtkTreeModel *tree_model,
- GtkTreePath *path);
-static GtkTreePath *gtk_list_store_get_path (GtkTreeModel *tree_model,
- GtkTreeIter *iter);
-static void gtk_list_store_iter_get_value (GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gint column,
- GValue *value);
-static gboolean gtk_list_store_iter_next (GtkTreeModel *tree_model,
- GtkTreeIter *iter);
-static GtkTreeIter *gtk_list_store_iter_children (GtkTreeModel *tree_model,
- GtkTreeIter *iter);
-static gboolean gtk_list_store_iter_has_child (GtkTreeModel *tree_model,
- GtkTreeIter *iter);
-static gint gtk_list_store_iter_n_children (GtkTreeModel *tree_model,
- GtkTreeIter *iter);
-static GtkTreeIter *gtk_list_store_iter_nth_child (GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gint n);
-static GtkTreeIter *gtk_list_store_iter_parent (GtkTreeModel *tree_model,
- GtkTreeIter *iter);
+static void gtk_list_store_init (GtkListStore *list_store);
+static void gtk_list_store_class_init (GtkListStoreClass *class);
+static void gtk_list_store_tree_model_init (GtkTreeModelIface *iface);
+static gint gtk_list_store_get_n_columns (GtkTreeModel *tree_model);
+static gboolean gtk_list_store_get_iter (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreePath *path);
+static GtkTreePath *gtk_list_store_get_path (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static void gtk_list_store_get_value (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value);
+static gboolean gtk_list_store_iter_next (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static gboolean gtk_list_store_iter_children (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent);
+static gboolean gtk_list_store_iter_has_child (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static gint gtk_list_store_iter_n_children (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static gboolean gtk_list_store_iter_nth_child (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ gint n);
+static gboolean gtk_list_store_iter_parent (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *child);
GtkType
@@ -151,7 +155,7 @@ gtk_list_store_tree_model_init (GtkTreeModelIface *iface)
iface->get_n_columns = gtk_list_store_get_n_columns;
iface->get_iter = gtk_list_store_get_iter;
iface->get_path = gtk_list_store_get_path;
- iface->iter_get_value = gtk_list_store_iter_get_value;
+ iface->get_value = gtk_list_store_get_value;
iface->iter_next = gtk_list_store_iter_next;
iface->iter_children = gtk_list_store_iter_children;
iface->iter_has_child = gtk_list_store_iter_has_child;
@@ -164,32 +168,32 @@ static void
gtk_list_store_init (GtkListStore *list_store)
{
list_store->root = NULL;
+ list_store->stamp = 1;
}
-GtkObject *
+GtkListStore *
gtk_list_store_new (void)
{
- return GTK_OBJECT (gtk_type_new (gtk_list_store_get_type ()));
+ return GTK_LIST_STORE (gtk_type_new (gtk_list_store_get_type ()));
}
-GtkObject *
+GtkListStore *
gtk_list_store_new_with_types (gint n_columns,
...)
{
- GtkObject *retval;
+ GtkListStore *retval;
va_list args;
gint i;
g_return_val_if_fail (n_columns > 0, NULL);
retval = gtk_list_store_new ();
- gtk_list_store_set_n_columns (GTK_LIST_STORE (retval),
- n_columns);
+ gtk_list_store_set_n_columns (retval, n_columns);
va_start (args, n_columns);
+
for (i = 0; i < n_columns; i++)
- gtk_list_store_set_column_type (GTK_LIST_STORE (retval),
- i, va_arg (args, GType));
+ gtk_list_store_set_column_type (retval, i, va_arg (args, GType));
va_end (args);
@@ -204,6 +208,7 @@ gtk_list_store_set_n_columns (GtkListStore *list_store,
g_return_if_fail (list_store != NULL);
g_return_if_fail (GTK_IS_LIST_STORE (list_store));
+ g_return_if_fail (n_columns > 0);
if (list_store->n_columns == n_columns)
return;
@@ -240,138 +245,160 @@ gtk_list_store_set_column_type (GtkListStore *list_store,
static gint
gtk_list_store_get_n_columns (GtkTreeModel *tree_model)
{
- g_return_val_if_fail (tree_model != NULL, 0);
g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), 0);
return GTK_LIST_STORE (tree_model)->n_columns;
}
-static GtkTreeIter *
+static gboolean
gtk_list_store_get_iter (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
GtkTreePath *path)
{
- g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, NULL);
-
- return (GtkTreeIter) g_slist_nth (G_SLIST (GTK_LIST_STORE (tree_model)->root),
- gtk_tree_path_get_indices (path)[0]);
+ g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), FALSE);
+ g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, FALSE);
+
+ iter->stamp = GTK_LIST_STORE (tree_model)->stamp;
+ iter->tree_node = g_slist_nth (G_SLIST (GTK_LIST_STORE (tree_model)->root),
+ gtk_tree_path_get_indices (path)[0]);
+
+ return iter->tree_node != NULL;
}
static GtkTreePath *
gtk_list_store_get_path (GtkTreeModel *tree_model,
- GtkTreeIter iter)
+ GtkTreeIter *iter)
{
GtkTreePath *retval;
GSList *list;
gint i = 0;
g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), NULL);
+ g_return_val_if_fail (iter->stamp == GTK_LIST_STORE (tree_model)->stamp, NULL);
for (list = G_SLIST (GTK_LIST_STORE (tree_model)->root); list; list = list->next)
{
- i++;
- if (list == G_SLIST (iter))
+ if (list == G_SLIST (iter->tree_node))
break;
+ i++;
}
if (list == NULL)
return NULL;
retval = gtk_tree_path_new ();
gtk_tree_path_append_index (retval, i);
-
return retval;
}
static void
-gtk_list_store_iter_get_value (GtkTreeModel *tree_model,
- GtkTreeIter iter,
- gint column,
- GValue *value)
+gtk_list_store_get_value (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value)
{
GtkTreeDataList *list;
gint tmp_column = column;
- g_return_if_fail (tree_model != NULL);
g_return_if_fail (GTK_IS_LIST_STORE (tree_model));
- g_return_if_fail (iter != NULL);
g_return_if_fail (column < GTK_LIST_STORE (tree_model)->n_columns);
+ g_return_if_fail (GTK_LIST_STORE (tree_model)->stamp == iter->stamp);
- list = G_SLIST (iter)->data;
+ list = G_SLIST (iter->tree_node)->data;
while (tmp_column-- > 0 && list)
list = list->next;
- g_return_if_fail (list != NULL);
-
- gtk_tree_data_list_iter_to_value (list,
- GTK_LIST_STORE (tree_model)->column_headers[column],
- value);
+ if (list == NULL)
+ g_value_init (value, GTK_LIST_STORE (tree_model)->column_headers[column]);
+ else
+ _gtk_tree_data_list_node_to_value (list,
+ GTK_LIST_STORE (tree_model)->column_headers[column],
+ value);
}
static gboolean
gtk_list_store_iter_next (GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
- if (iter == NULL || *iter == NULL)
- return FALSE;
+ g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), FALSE);
+ g_return_val_if_fail (GTK_LIST_STORE (tree_model)->stamp == iter->stamp, FALSE);
- *iter = (GtkTreeIter) G_SLIST (*iter)->next;
+ iter->tree_node = G_SLIST (iter->tree_node)->next;
- return (*iter != NULL);
+ return (iter->tree_node != NULL);
}
-static GtkTreeIter
+static gboolean
gtk_list_store_iter_children (GtkTreeModel *tree_model,
- GtkTreeIter iter)
+ GtkTreeIter *iter,
+ GtkTreeIter *parent)
{
- return NULL;
+ iter->stamp = 0;
+ iter->tree_node = NULL;
+
+ return FALSE;
}
static gboolean
gtk_list_store_iter_has_child (GtkTreeModel *tree_model,
- GtkTreeIter iter)
+ GtkTreeIter *iter)
{
return FALSE;
}
static gint
gtk_list_store_iter_n_children (GtkTreeModel *tree_model,
- GtkTreeIter iter)
+ GtkTreeIter *iter)
{
return 0;
}
-static GtkTreeIter
+static gboolean
gtk_list_store_iter_nth_child (GtkTreeModel *tree_model,
- GtkTreeIter iter,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
gint n)
{
- return NULL;
-}
+ g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), FALSE);
-static GtkTreeIter
-gtk_list_store_iter_parent (GtkTreeModel *tree_model,
- GtkTreeIter iter)
-{
- return NULL;
+ if (parent)
+ {
+ g_return_val_if_fail (iter->stamp == GTK_LIST_STORE (tree_model)->stamp, FALSE);
+ iter->stamp = 0;
+ iter->tree_node = NULL;
+
+ return FALSE;
+ }
+
+ iter->tree_node = g_slist_nth (G_SLIST (GTK_LIST_STORE (tree_model)->root), n);
+ if (iter->tree_node)
+ iter->stamp = GTK_LIST_STORE (tree_model)->stamp;
+ else
+ iter->stamp = 0;
+
+ return (iter->tree_node != NULL);
}
-/* Public accessors */
-GtkTreeIter
-gtk_list_store_iter_new (void)
+static gboolean
+gtk_list_store_iter_parent (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *child)
{
- GtkTreeIter retval = (GtkTreeIter) g_slist_alloc ();
+ iter->stamp = 0;
+ iter->tree_node = NULL;
- return retval;
+ return FALSE;
}
+/* Public accessors */
/* This is a somewhat inelegant function that does a lot of list
* manipulations on it's own.
*/
void
-gtk_list_store_iter_set_cell (GtkListStore *list_store,
- GtkTreeIter iter,
- gint column,
- GValue *value)
+gtk_list_store_set_cell (GtkListStore *list_store,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value)
{
GtkTreeDataList *list;
GtkTreeDataList *prev;
@@ -381,13 +408,13 @@ gtk_list_store_iter_set_cell (GtkListStore *list_store,
g_return_if_fail (iter != NULL);
g_return_if_fail (column >= 0 && column < list_store->n_columns);
- prev = list = G_SLIST (iter)->data;
+ prev = list = G_SLIST (iter->tree_node)->data;
while (list != NULL)
{
if (column == 0)
{
- gtk_tree_data_list_value_to_iter (list, value);
+ _gtk_tree_data_list_value_to_node (list, value);
return;
}
@@ -396,123 +423,235 @@ gtk_list_store_iter_set_cell (GtkListStore *list_store,
list = list->next;
}
- if (G_SLIST (iter)->data == NULL)
+ if (G_SLIST (iter->tree_node)->data == NULL)
{
- G_SLIST (iter)->data = list = gtk_tree_data_list_alloc ();
+ G_SLIST (iter->tree_node)->data = list = _gtk_tree_data_list_alloc ();
list->next = NULL;
}
else
{
- list = prev->next = gtk_tree_data_list_alloc ();
+ list = prev->next = _gtk_tree_data_list_alloc ();
list->next = NULL;
}
while (column != 0)
{
- list->next = gtk_tree_data_list_alloc ();
+ list->next = _gtk_tree_data_list_alloc ();
list = list->next;
list->next = NULL;
column --;
}
- gtk_tree_data_list_value_to_iter (list, value);
+ _gtk_tree_data_list_value_to_node (list, value);
+ gtk_signal_emit_by_name (GTK_OBJECT (list_store),
+ "changed",
+ NULL, iter);
}
void
-gtk_list_store_iter_remove (GtkListStore *list_store,
- GtkTreeIter iter)
+gtk_list_store_remove (GtkListStore *list_store,
+ GtkTreeIter *iter)
{
- /* FIXME: implement */
- g_warning ("Remember to implement this function\n");
+ GtkTreePath *path;
+
+ g_return_if_fail (list_store != NULL);
+ g_return_if_fail (GTK_IS_LIST_STORE (list_store));
+
+ if (G_SLIST (iter->tree_node)->data)
+ _gtk_tree_data_list_free ((GtkTreeDataList *) G_SLIST (iter->tree_node)->data,
+ list_store->column_headers);
+
+ path = gtk_list_store_get_path (GTK_TREE_MODEL (list_store), iter);
+ list_store->root = g_slist_remove_link (G_SLIST (list_store->root),
+ G_SLIST (iter->tree_node));
+ list_store->stamp ++;
+ gtk_signal_emit_by_name (GTK_OBJECT (list_store),
+ "deleted",
+ path);
+ gtk_tree_path_free (path);
}
-GtkTreeIter
-gtk_list_store_iter_insert (GtkListStore *list_store,
- gint position,
- GtkTreeIter iter)
+void
+gtk_list_store_insert (GtkListStore *list_store,
+ GtkTreeIter *iter,
+ gint position)
{
GSList *list;
+ GtkTreePath *path;
- g_return_val_if_fail (list_store != NULL, iter);
- g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), iter);
- g_return_val_if_fail (iter != NULL, iter);
- g_return_val_if_fail (position < 0, iter);
- g_return_val_if_fail (G_SLIST (iter)->next == NULL, iter);
+ g_return_if_fail (list_store != NULL);
+ g_return_if_fail (GTK_IS_LIST_STORE (list_store));
+ g_return_if_fail (iter != NULL);
+ g_return_if_fail (position < 0);
if (position == 0)
{
- gtk_list_store_iter_prepend (list_store, iter);
- return iter;
+ gtk_list_store_prepend (list_store, iter);
+ return;
}
- list = g_slist_nth (G_SLIST (list_store->root), position);
+ iter->stamp = list_store->stamp;
+ iter->tree_node = g_slist_alloc ();
+
+ list = g_slist_nth (G_SLIST (list_store->root), position - 1);
if (list)
{
- G_SLIST (iter)->next = list->next;
- list->next = G_SLIST (iter)->next;
+ G_SLIST (iter->tree_node)->next = list->next;
+ list->next = G_SLIST (iter->tree_node)->next;
}
-
- return iter;
+ path = gtk_tree_path_new ();
+ gtk_tree_path_append_index (path, position);
+ gtk_signal_emit_by_name (GTK_OBJECT (list_store),
+ "inserted",
+ path, iter);
+ gtk_tree_path_free (path);
}
-
-GtkTreeIter
-gtk_list_store_iter_insert_before (GtkListStore *list_store,
- GtkTreeIter sibling,
- GtkTreeIter iter)
+void
+gtk_list_store_insert_before (GtkListStore *list_store,
+ GtkTreeIter *iter,
+ GtkTreeIter *sibling)
{
- g_return_val_if_fail (list_store != NULL, iter);
- g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), iter);
- g_return_val_if_fail (iter != NULL, iter);
+ GtkTreePath *path;
+ GSList *list, *prev;
+ gint i = 0;
+
+ g_return_if_fail (list_store != NULL);
+ g_return_if_fail (GTK_IS_LIST_STORE (list_store));
+ g_return_if_fail (iter != NULL);
+ g_return_if_fail (G_SLIST (iter)->next == NULL);
- /* FIXME: This is all wrong. This is actually insert_after */
if (sibling == NULL)
- return gtk_list_store_iter_prepend (list_store, iter);
+ {
+ gtk_list_store_append (list_store, iter);
+ return;
+ }
- G_SLIST (iter)->next = G_SLIST (sibling)->next;
- G_SLIST (sibling)->next = G_SLIST (iter);
- return iter;
+ iter->stamp = list_store->stamp;
+ iter->tree_node = g_slist_alloc ();
+
+ prev = list = list_store->root;
+ while (list && list != sibling->tree_node)
+ {
+ prev = list;
+ list = list->next;
+ i++;
+ }
+
+ if (prev)
+ {
+ prev->next = iter->tree_node;
+ }
+ else
+ {
+ G_SLIST (iter->tree_node)->next = list_store->root;
+ list_store->root = iter->tree_node;
+ }
+
+ path = gtk_tree_path_new ();
+ gtk_tree_path_append_index (path, i);
+ gtk_signal_emit_by_name (GTK_OBJECT (list_store),
+ "inserted",
+ path, iter);
+ gtk_tree_path_free (path);
}
-GtkTreeIter
-gtk_list_store_iter_prepend (GtkListStore *list_store,
- GtkTreeIter iter)
+void
+gtk_list_store_insert_after (GtkListStore *list_store,
+ GtkTreeIter *iter,
+ GtkTreeIter *sibling)
{
- g_return_val_if_fail (list_store != NULL, iter);
- g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), iter);
- g_return_val_if_fail (iter != NULL, iter);
+ GtkTreePath *path;
+ GSList *list;
+ gint i = 0;
+
+ g_return_if_fail (list_store != NULL);
+ g_return_if_fail (GTK_IS_LIST_STORE (list_store));
+ g_return_if_fail (iter == NULL);
+ if (sibling)
+ g_return_if_fail (sibling->stamp == list_store->stamp);
- G_SLIST (iter)->next = G_SLIST (list_store->root);
- list_store->root = iter;
+ if (sibling == NULL)
+ {
+ gtk_list_store_prepend (list_store, iter);
+ return;
+ }
+
+ for (list = list_store->root; list && list != sibling->tree_node; list = list->next)
+ i++;
+
+ g_return_if_fail (list != NULL);
- return iter;
+ iter->stamp = list_store->stamp;
+ iter->tree_node = g_slist_alloc ();
+
+ G_SLIST (iter->tree_node)->next = G_SLIST (sibling->tree_node)->next;
+ G_SLIST (sibling)->next = G_SLIST (iter);
+
+ path = gtk_tree_path_new ();
+ gtk_tree_path_append_index (path, i);
+ gtk_signal_emit_by_name (GTK_OBJECT (list_store),
+ "inserted",
+ path, iter);
+ gtk_tree_path_free (path);
}
-GtkTreeIter
-gtk_list_store_iter_append (GtkListStore *list_store,
- GtkTreeIter iter)
+void
+gtk_list_store_prepend (GtkListStore *list_store,
+ GtkTreeIter *iter)
{
- GSList *list;
+ GtkTreePath *path;
+
+ g_return_if_fail (list_store != NULL);
+ g_return_if_fail (GTK_IS_LIST_STORE (list_store));
+ g_return_if_fail (iter != NULL);
- g_return_val_if_fail (list_store != NULL, iter);
- g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), iter);
- g_return_val_if_fail (iter != NULL, iter);
- g_return_val_if_fail (G_SLIST (iter)->next == NULL, iter);
+ iter->stamp = list_store->stamp;
+ iter->tree_node = g_slist_alloc ();
- list = g_slist_last (G_SLIST (list_store->root));
- if (list == NULL)
- list_store->root = iter;
- else
- list->next = G_SLIST (iter);
+ G_SLIST (iter->tree_node)->next = G_SLIST (list_store->root);
+ list_store->root = iter->tree_node;
- return iter;
+ path = gtk_tree_path_new ();
+ gtk_tree_path_append_index (path, 0);
+ gtk_signal_emit_by_name (GTK_OBJECT (list_store),
+ "inserted",
+ path, iter);
+ gtk_tree_path_free (path);
}
-GtkTreeIter
-gtk_list_store_iter_get_root (GtkListStore *list_store)
+void
+gtk_list_store_append (GtkListStore *list_store,
+ GtkTreeIter *iter)
{
- g_return_val_if_fail (list_store != NULL, NULL);
- g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), NULL);
+ GtkTreePath *path;
+ GSList *list, *prev;
+ gint i = 0;
+
+ g_return_if_fail (list_store != NULL);
+ g_return_if_fail (GTK_IS_LIST_STORE (list_store));
+ g_return_if_fail (iter != NULL);
+ g_return_if_fail (G_SLIST (iter)->next == NULL);
+
+ iter->stamp = list_store->stamp;
+ iter->tree_node = g_slist_alloc ();
- return (GtkTreeIter *) list_store->root;
+ prev = list = list_store->root;
+ while (list)
+ {
+ prev = list;
+ list = list->next;
+ i++;
+ }
+
+ if (prev)
+ prev->next = iter->tree_node;
+ else
+ list_store->root = iter->tree_node;
+
+ path = gtk_tree_path_new ();
+ gtk_tree_path_append_index (path, i);
+ gtk_signal_emit_by_name (GTK_OBJECT (list_store),
+ "inserted",
+ path, iter);
+ gtk_tree_path_free (path);
}
-#endif
diff --git a/gtk/gtkliststore.h b/gtk/gtkliststore.h
index 4bb562b32..dc91fa567 100644
--- a/gtk/gtkliststore.h
+++ b/gtk/gtkliststore.h
@@ -52,45 +52,48 @@ struct _GtkListStoreClass
/* signals */
/* Will be moved into the GtkTreeModelIface eventually */
- void (* changed) (GtkTreeModel *tree_model,
- GtkTreePath *path,
- GtkTreeIter *iter);
- void (* inserted) (GtkTreeModel *tree_model,
- GtkTreePath *path,
- GtkTreeIter *iter);
- void (* child_toggled) (GtkTreeModel *tree_model,
- GtkTreePath *path,
- GtkTreeIter *iter);
- void (* deleted) (GtkTreeModel *tree_model,
- GtkTreePath *path);
+ void (* changed) (GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter);
+ void (* inserted) (GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter);
+ void (* child_toggled) (GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter);
+ void (* deleted) (GtkTreeModel *tree_model,
+ GtkTreePath *path);
};
-GtkType gtk_list_store_get_type (void);
-GtkObject *gtk_list_store_new (void);
-GtkObject *gtk_list_store_new_with_types (gint n_columns,
- ...);
-void gtk_list_store_set_n_columns (GtkListStore *store,
- gint n_columns);
-void gtk_list_store_set_column_type (GtkListStore *store,
- gint column,
- GType type);
-GtkTreeIter *gtk_list_store_node_new (void);
-void gtk_list_store_node_set_cell (GtkListStore *store,
- GtkTreeIter *iter,
- gint column,
- GValue *value);
-void gtk_list_store_node_remove (GtkListStore *store,
- GtkTreeIter *iter);
-GtkTreeIter *gtk_list_store_node_insert (GtkListStore *store,
- gint position,
- GtkTreeIter *iter);
-GtkTreeIter *gtk_list_store_node_insert_before (GtkListStore *store,
- GtkTreeIter sibling,
- GtkTreeIter *iter);
-GtkTreeIter *gtk_list_store_node_prepend (GtkListStore *store,
- GtkTreeIter *iter);
-GtkTreeIter *gtk_list_store_node_append (GtkListStore *store,
- GtkTreeIter *iter);
+
+GtkType gtk_list_store_get_type (void);
+GtkListStore *gtk_list_store_new (void);
+GtkListStore *gtk_list_store_new_with_types (gint n_columns,
+ ...);
+void gtk_list_store_set_n_columns (GtkListStore *store,
+ gint n_columns);
+void gtk_list_store_set_column_type (GtkListStore *store,
+ gint column,
+ GType type);
+void gtk_list_store_set_cell (GtkListStore *store,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value);
+void gtk_list_store_remove (GtkListStore *store,
+ GtkTreeIter *iter);
+void gtk_list_store_insert (GtkListStore *store,
+ GtkTreeIter *iter,
+ gint position);
+void gtk_list_store_insert_before (GtkListStore *store,
+ GtkTreeIter *iter,
+ GtkTreeIter *sibling);
+void gtk_list_store_insert_after (GtkListStore *store,
+ GtkTreeIter *iter,
+ GtkTreeIter *sibling);
+void gtk_list_store_prepend (GtkListStore *store,
+ GtkTreeIter *iter);
+void gtk_list_store_append (GtkListStore *store,
+ GtkTreeIter *iter);
diff --git a/gtk/gtkmarshal.list b/gtk/gtkmarshal.list
index 116da0161..eeed763bb 100644
--- a/gtk/gtkmarshal.list
+++ b/gtk/gtkmarshal.list
@@ -22,12 +22,15 @@
# BOOL deprecated alias for BOOLEAN
BOOLEAN:POINTER
+BOOLEAN:POINTER,POINTER
BOOLEAN:POINTER,INT,INT
BOOLEAN:POINTER,INT,INT,UINT
+BOOLEAN:POINTER,POINTER,INT
BOOLEAN:POINTER,POINTER,INT,INT
BOOLEAN:POINTER,STRING,STRING,POINTER
BOOLEAN:VOID
ENUM:ENUM
+INT:INT
INT:OBJECT,BOXED,POINTER
INT:POINTER
INT:POINTER,CHAR,CHAR
diff --git a/gtk/gtkmarshalers.list b/gtk/gtkmarshalers.list
index 116da0161..eeed763bb 100644
--- a/gtk/gtkmarshalers.list
+++ b/gtk/gtkmarshalers.list
@@ -22,12 +22,15 @@
# BOOL deprecated alias for BOOLEAN
BOOLEAN:POINTER
+BOOLEAN:POINTER,POINTER
BOOLEAN:POINTER,INT,INT
BOOLEAN:POINTER,INT,INT,UINT
+BOOLEAN:POINTER,POINTER,INT
BOOLEAN:POINTER,POINTER,INT,INT
BOOLEAN:POINTER,STRING,STRING,POINTER
BOOLEAN:VOID
ENUM:ENUM
+INT:INT
INT:OBJECT,BOXED,POINTER
INT:POINTER
INT:POINTER,CHAR,CHAR
diff --git a/gtk/gtkmodelsimple.c b/gtk/gtkmodelsimple.c
index 6502701d9..ddfc733f7 100644
--- a/gtk/gtkmodelsimple.c
+++ b/gtk/gtkmodelsimple.c
@@ -16,26 +16,26 @@
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
-#if 0
+
#include "gtkmodelsimple.h"
#include "gtksignal.h"
enum {
- NODE_CHANGED,
- NODE_INSERTED,
- NODE_CHILD_TOGGLED,
- NODE_DELETED,
+ CHANGED,
+ INSERTED,
+ CHILD_TOGGLED,
+ DELETED,
GET_N_COLUMNS,
- GET_NODE,
+ GET_COLUMN_TYPE,
+ GET_ITER,
GET_PATH,
- NODE_GET_VALUE,
- NODE_COPY,
- NODE_NEXT,
- NODE_CHILDREN,
- NODE_HAS_CHILD,
- NODE_N_CHILDREN,
- NODE_NTH_CHILD,
- NODE_PARENT,
+ GET_VALUE,
+ ITER_NEXT,
+ ITER_CHILDREN,
+ ITER_HAS_CHILD,
+ ITER_N_CHILDREN,
+ ITER_NTH_CHILD,
+ ITER_PARENT,
LAST_SIGNAL
};
@@ -43,27 +43,34 @@ static void gtk_model_simple_init (GtkModelSimple *
static void gtk_model_simple_class_init (GtkModelSimpleClass *class);
static void gtk_model_simple_tree_model_init (GtkTreeModelIface *iface);
static gint gtk_real_model_simple_get_n_columns (GtkTreeModel *tree_model);
-static GtkTreeNode gtk_real_model_simple_get_node (GtkTreeModel *tree_model,
+static GType gtk_real_model_simple_get_column_type (GtkTreeModel *tree_model,
+ gint index);
+static gboolean gtk_real_model_simple_get_iter (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
GtkTreePath *path);
static GtkTreePath *gtk_real_model_simple_get_path (GtkTreeModel *tree_model,
- GtkTreeNode node);
-static void gtk_real_model_simple_node_get_value (GtkTreeModel *tree_model,
- GtkTreeNode node,
+ GtkTreeIter *iter);
+static void gtk_real_model_simple_get_value (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
gint column,
GValue *value);
-static gboolean gtk_real_model_simple_node_next (GtkTreeModel *tree_model,
- GtkTreeNode *node);
-static GtkTreeNode gtk_real_model_simple_node_children (GtkTreeModel *tree_model,
- GtkTreeNode node);
-static gboolean gtk_real_model_simple_node_has_child (GtkTreeModel *tree_model,
- GtkTreeNode node);
-static gint gtk_real_model_simple_node_n_children (GtkTreeModel *tree_model,
- GtkTreeNode node);
-static GtkTreeNode gtk_real_model_simple_node_nth_child (GtkTreeModel *tree_model,
- GtkTreeNode node,
+static gboolean gtk_real_model_simple_iter_next (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static gboolean gtk_real_model_simple_iter_children (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent);
+static gboolean gtk_real_model_simple_iter_has_child (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static gint gtk_real_model_simple_iter_n_children (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static gboolean gtk_real_model_simple_iter_nth_child (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
gint n);
-static GtkTreeNode gtk_real_model_simple_node_parent (GtkTreeModel *tree_model,
- GtkTreeNode node);
+static gboolean gtk_real_model_simple_iter_parent (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *child);
+
@@ -106,10 +113,14 @@ gtk_model_simple_get_type (void)
return model_simple_type;
}
-GtkObject *
+GtkModelSimple *
gtk_model_simple_new (void)
{
- return GTK_OBJECT (gtk_type_new (GTK_TYPE_MODEL_SIMPLE));
+ GtkModelSimple *retval;
+
+ retval = GTK_MODEL_SIMPLE (gtk_type_new (GTK_TYPE_MODEL_SIMPLE));
+
+ return retval;
}
static void
@@ -119,38 +130,38 @@ gtk_model_simple_class_init (GtkModelSimpleClass *class)
object_class = (GtkObjectClass*) class;
- model_simple_signals[NODE_CHANGED] =
- gtk_signal_new ("node_changed",
+ model_simple_signals[CHANGED] =
+ gtk_signal_new ("changed",
GTK_RUN_FIRST,
GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkModelSimpleClass, node_changed),
+ GTK_SIGNAL_OFFSET (GtkModelSimpleClass, changed),
gtk_marshal_VOID__POINTER_POINTER,
GTK_TYPE_NONE, 2,
GTK_TYPE_POINTER,
GTK_TYPE_POINTER);
- model_simple_signals[NODE_INSERTED] =
- gtk_signal_new ("node_inserted",
+ model_simple_signals[INSERTED] =
+ gtk_signal_new ("inserted",
GTK_RUN_FIRST,
GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkModelSimpleClass, node_inserted),
+ GTK_SIGNAL_OFFSET (GtkModelSimpleClass, inserted),
gtk_marshal_VOID__POINTER_POINTER,
GTK_TYPE_NONE, 2,
GTK_TYPE_POINTER,
GTK_TYPE_POINTER);
- model_simple_signals[NODE_CHILD_TOGGLED] =
- gtk_signal_new ("node_child_toggled",
+ model_simple_signals[CHILD_TOGGLED] =
+ gtk_signal_new ("child_toggled",
GTK_RUN_FIRST,
GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkModelSimpleClass, node_child_toggled),
+ GTK_SIGNAL_OFFSET (GtkModelSimpleClass, child_toggled),
gtk_marshal_VOID__POINTER_POINTER,
GTK_TYPE_NONE, 2,
GTK_TYPE_POINTER,
GTK_TYPE_POINTER);
- model_simple_signals[NODE_DELETED] =
- gtk_signal_new ("node_deleted",
+ model_simple_signals[DELETED] =
+ gtk_signal_new ("deleted",
GTK_RUN_FIRST,
GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkModelSimpleClass, node_deleted),
+ GTK_SIGNAL_OFFSET (GtkModelSimpleClass, deleted),
gtk_marshal_VOID__POINTER,
GTK_TYPE_NONE, 1,
GTK_TYPE_POINTER);
@@ -162,13 +173,22 @@ gtk_model_simple_class_init (GtkModelSimpleClass *class)
0,
gtk_marshal_INT__VOID,
GTK_TYPE_INT, 0);
- model_simple_signals[GET_NODE] =
- gtk_signal_new ("get_node",
+ model_simple_signals[GET_COLUMN_TYPE] =
+ gtk_signal_new ("get_column_type",
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
0,
- gtk_marshal_POINTER__POINTER,
- GTK_TYPE_POINTER, 1,
+ gtk_marshal_INT__INT,
+ GTK_TYPE_INT, 1,
+ GTK_TYPE_INT);
+ model_simple_signals[GET_ITER] =
+ gtk_signal_new ("get_iter",
+ GTK_RUN_LAST,
+ GTK_CLASS_TYPE (object_class),
+ 0,
+ gtk_marshal_BOOLEAN__POINTER_POINTER,
+ GTK_TYPE_BOOL, 2,
+ GTK_TYPE_POINTER,
GTK_TYPE_POINTER);
model_simple_signals[GET_PATH] =
gtk_signal_new ("get_path",
@@ -178,8 +198,8 @@ gtk_model_simple_class_init (GtkModelSimpleClass *class)
gtk_marshal_POINTER__POINTER,
GTK_TYPE_POINTER, 1,
GTK_TYPE_POINTER);
- model_simple_signals[NODE_GET_VALUE] =
- gtk_signal_new ("node_get_value",
+ model_simple_signals[GET_VALUE] =
+ gtk_signal_new ("get_value",
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
0,
@@ -188,54 +208,56 @@ gtk_model_simple_class_init (GtkModelSimpleClass *class)
GTK_TYPE_POINTER,
GTK_TYPE_INT,
GTK_TYPE_POINTER);
- model_simple_signals[NODE_NEXT] =
- gtk_signal_new ("node_next",
+ model_simple_signals[ITER_NEXT] =
+ gtk_signal_new ("iter_next",
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
0,
gtk_marshal_BOOLEAN__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_POINTER);
- model_simple_signals[NODE_CHILDREN] =
- gtk_signal_new ("node_children",
+ model_simple_signals[ITER_CHILDREN] =
+ gtk_signal_new ("iter_children",
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
0,
- gtk_marshal_POINTER__POINTER,
- GTK_TYPE_POINTER, 1,
+ gtk_marshal_BOOLEAN__POINTER_POINTER,
+ GTK_TYPE_POINTER, 2,
+ GTK_TYPE_POINTER,
GTK_TYPE_POINTER);
- model_simple_signals[NODE_HAS_CHILD] =
- gtk_signal_new ("node_has_child",
+ model_simple_signals[ITER_HAS_CHILD] =
+ gtk_signal_new ("iter_has_child",
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
0,
- gtk_marshal_POINTER__POINTER,
- GTK_TYPE_POINTER, 1,
+ gtk_marshal_BOOLEAN__POINTER,
+ GTK_TYPE_BOOL, 1,
GTK_TYPE_POINTER);
- model_simple_signals[NODE_N_CHILDREN] =
- gtk_signal_new ("node_n_children",
+ model_simple_signals[ITER_N_CHILDREN] =
+ gtk_signal_new ("iter_n_children",
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
0,
- gtk_marshal_POINTER__POINTER,
- GTK_TYPE_POINTER, 1,
+ gtk_marshal_INT__POINTER,
+ GTK_TYPE_INT, 1,
GTK_TYPE_POINTER);
- model_simple_signals[NODE_NTH_CHILD] =
+ model_simple_signals[ITER_NTH_CHILD] =
gtk_signal_new ("node_nth_child",
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
0,
- gtk_marshal_POINTER__POINTER_INT,
- GTK_TYPE_POINTER, 2,
+ gtk_marshal_BOOLEAN__POINTER_POINTER_INT,
+ GTK_TYPE_BOOL, 2,
GTK_TYPE_POINTER,
GTK_TYPE_POINTER);
- model_simple_signals[NODE_PARENT] =
+ model_simple_signals[ITER_PARENT] =
gtk_signal_new ("node_parent",
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
0,
- gtk_marshal_POINTER__POINTER,
- GTK_TYPE_POINTER, 1,
+ gtk_marshal_BOOLEAN__POINTER_POINTER,
+ GTK_TYPE_BOOL, 2,
+ GTK_TYPE_POINTER,
GTK_TYPE_POINTER);
gtk_object_class_add_signals (object_class, model_simple_signals, LAST_SIGNAL);
@@ -245,21 +267,23 @@ static void
gtk_model_simple_tree_model_init (GtkTreeModelIface *iface)
{
iface->get_n_columns = gtk_real_model_simple_get_n_columns;
- iface->get_node = gtk_real_model_simple_get_node;
+ iface->get_column_type = gtk_real_model_simple_get_column_type;
+ iface->get_iter = gtk_real_model_simple_get_iter;
iface->get_path = gtk_real_model_simple_get_path;
- iface->node_get_value = gtk_real_model_simple_node_get_value;
- iface->node_next = gtk_real_model_simple_node_next;
- iface->node_children = gtk_real_model_simple_node_children;
- iface->node_has_child = gtk_real_model_simple_node_has_child;
- iface->node_n_children = gtk_real_model_simple_node_n_children;
- iface->node_nth_child = gtk_real_model_simple_node_nth_child;
- iface->node_parent = gtk_real_model_simple_node_parent;
+ iface->get_value = gtk_real_model_simple_get_value;
+ iface->iter_next = gtk_real_model_simple_iter_next;
+ iface->iter_children = gtk_real_model_simple_iter_children;
+ iface->iter_has_child = gtk_real_model_simple_iter_has_child;
+ iface->iter_n_children = gtk_real_model_simple_iter_n_children;
+ iface->iter_nth_child = gtk_real_model_simple_iter_nth_child;
+ iface->iter_parent = gtk_real_model_simple_iter_parent;
}
static void
gtk_model_simple_init (GtkModelSimple *model_simple)
{
+ model_simple->stamp = 1;
}
static gint
@@ -272,150 +296,164 @@ gtk_real_model_simple_get_n_columns (GtkTreeModel *tree_model)
return retval;
}
-static GtkTreeNode
-gtk_real_model_simple_get_node (GtkTreeModel *tree_model,
+static GType
+gtk_real_model_simple_get_column_type (GtkTreeModel *tree_model,
+ gint index)
+{
+ GType retval = G_TYPE_INVALID;
+
+ gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_COLUMN_TYPE], index, &retval);
+
+ return retval;
+}
+
+static gboolean
+gtk_real_model_simple_get_iter (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
GtkTreePath *path)
{
- GtkTreeNode retval;
+ gboolean retval;
- gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_NODE], path, &retval);
+ gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_ITER], iter, path, &retval);
return retval;
}
static GtkTreePath *
gtk_real_model_simple_get_path (GtkTreeModel *tree_model,
- GtkTreeNode node)
+ GtkTreeIter *iter)
{
GtkTreePath *retval;
- gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_PATH], node, &retval);
+ gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_PATH], iter, &retval);
return retval;
}
static void
-gtk_real_model_simple_node_get_value (GtkTreeModel *tree_model,
- GtkTreeNode node,
- gint column,
- GValue *value)
+gtk_real_model_simple_get_value (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value)
{
- gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_GET_VALUE], node, column, value);
+ gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_VALUE], iter, column, value);
}
static gboolean
-gtk_real_model_simple_node_next (GtkTreeModel *tree_model,
- GtkTreeNode *node)
+gtk_real_model_simple_iter_next (GtkTreeModel *tree_model,
+ GtkTreeIter *iter)
{
gboolean retval = FALSE;
- gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_NEXT], node, &retval);
+ gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_NEXT], iter, &retval);
return retval;
}
-static GtkTreeNode
-gtk_real_model_simple_node_children (GtkTreeModel *tree_model,
- GtkTreeNode node)
+static gboolean
+gtk_real_model_simple_iter_children (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent)
{
- GtkTreeNode retval = NULL;
+ gboolean retval = FALSE;
- gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_CHILDREN], node, &retval);
+ gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_CHILDREN], iter, parent, &retval);
return retval;
}
static gboolean
-gtk_real_model_simple_node_has_child (GtkTreeModel *tree_model,
- GtkTreeNode node)
+gtk_real_model_simple_iter_has_child (GtkTreeModel *tree_model,
+ GtkTreeIter *iter)
{
gboolean retval = FALSE;
- gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_HAS_CHILD], node, &retval);
+ gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_HAS_CHILD], iter, &retval);
return retval;
}
static gint
-gtk_real_model_simple_node_n_children (GtkTreeModel *tree_model,
- GtkTreeNode node)
+gtk_real_model_simple_iter_n_children (GtkTreeModel *tree_model,
+ GtkTreeIter *iter)
{
gint retval = 0;
- gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_N_CHILDREN], node, &retval);
+ gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_N_CHILDREN], iter, &retval);
return retval;
}
-static GtkTreeNode
-gtk_real_model_simple_node_nth_child (GtkTreeModel *tree_model,
- GtkTreeNode node,
+static gboolean
+gtk_real_model_simple_iter_nth_child (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
gint n)
{
- GtkTreeNode retval = NULL;
+ gboolean retval = FALSE;
- gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_NTH_CHILD], node, n, &retval);
+ gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_NTH_CHILD], iter, parent, n, &retval);
return retval;
}
-static GtkTreeNode
-gtk_real_model_simple_node_parent (GtkTreeModel *tree_model,
- GtkTreeNode node)
+static gboolean
+gtk_real_model_simple_iter_parent (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *child)
{
- GtkTreeNode retval = NULL;
+ gboolean retval = FALSE;
- gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_PARENT], node, &retval);
+ gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_PARENT], iter, child, &retval);
return retval;
}
/* Public functions */
void
-gtk_model_simple_node_changed (GtkModelSimple *simple,
- GtkTreePath *path,
- GtkTreeNode node)
+gtk_model_simple_changed (GtkModelSimple *simple,
+ GtkTreePath *path,
+ GtkTreeIter *iter)
{
g_return_if_fail (simple != NULL);
g_return_if_fail (GTK_IS_MODEL_SIMPLE (simple));
g_return_if_fail (path != NULL);
- gtk_signal_emit_by_name (GTK_OBJECT (simple), "node_changed", path, node);
+ gtk_signal_emit_by_name (GTK_OBJECT (simple), "changed", path, iter);
}
void
-gtk_model_simple_node_inserted (GtkModelSimple *simple,
- GtkTreePath *path,
- GtkTreeNode node)
+gtk_model_simple_inserted (GtkModelSimple *simple,
+ GtkTreePath *path,
+ GtkTreeIter *iter)
{
g_return_if_fail (simple != NULL);
g_return_if_fail (GTK_IS_MODEL_SIMPLE (simple));
g_return_if_fail (path != NULL);
- gtk_signal_emit_by_name (GTK_OBJECT (simple), "node_inserted", path, node);
+ gtk_signal_emit_by_name (GTK_OBJECT (simple), "inserted", path, iter);
}
void
-gtk_model_simple_node_child_toggled (GtkModelSimple *simple,
- GtkTreePath *path,
- GtkTreeNode node)
+gtk_model_simple_child_toggled (GtkModelSimple *simple,
+ GtkTreePath *path,
+ GtkTreeIter *iter)
{
g_return_if_fail (simple != NULL);
g_return_if_fail (GTK_IS_MODEL_SIMPLE (simple));
g_return_if_fail (path != NULL);
- gtk_signal_emit_by_name (GTK_OBJECT (simple), "node_child_toggled", path, node);
+ gtk_signal_emit_by_name (GTK_OBJECT (simple), "child_toggled", path, iter);
}
void
-gtk_model_simple_node_deleted (GtkModelSimple *simple,
+gtk_model_simple_iter_deleted (GtkModelSimple *simple,
GtkTreePath *path,
- GtkTreeNode node)
+ GtkTreeIter *iter)
{
g_return_if_fail (simple != NULL);
g_return_if_fail (GTK_IS_MODEL_SIMPLE (simple));
g_return_if_fail (path != NULL);
- gtk_signal_emit_by_name (GTK_OBJECT (simple), "node_deleted", path, node);
+ gtk_signal_emit_by_name (GTK_OBJECT (simple), "iter_deleted", path, iter);
}
-#endif
diff --git a/gtk/gtkmodelsimple.h b/gtk/gtkmodelsimple.h
index b637d7815..fa13d943e 100644
--- a/gtk/gtkmodelsimple.h
+++ b/gtk/gtkmodelsimple.h
@@ -26,7 +26,6 @@
extern "C" {
#endif /* __cplusplus */
-#if 0
#define GTK_TYPE_MODEL_SIMPLE (gtk_model_simple_get_type ())
#define GTK_MODEL_SIMPLE(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_MODEL_SIMPLE, GtkModelSimple))
@@ -40,6 +39,8 @@ typedef struct _GtkModelSimpleClass GtkModelSimpleClass;
struct _GtkModelSimple
{
GtkObject parent;
+
+ gint stamp;
};
struct _GtkModelSimpleClass
@@ -49,37 +50,36 @@ struct _GtkModelSimpleClass
/* signals */
/* Will be moved into the GtkTreeModelIface eventually */
void (* changed) (GtkTreeModel *tree_model,
- GtkTreePath *path,
- GtkTreeNode node);
+ GtkTreePath *path,
+ GtkTreeIter *iter);
void (* inserted) (GtkTreeModel *tree_model,
- GtkTreePath *path,
- GtkTreeNode node);
+ GtkTreePath *path,
+ GtkTreeIter *iter);
void (* child_toggled) (GtkTreeModel *tree_model,
- GtkTreePath *path,
- GtkTreeNode node);
+ GtkTreePath *path,
+ GtkTreeIter *iter);
void (* deleted) (GtkTreeModel *tree_model,
- GtkTreePath *path);
+ GtkTreePath *path);
};
-GtkType gtk_model_simple_get_type (void);
-GtkObject *gtk_model_simple_new (void);
+GtkType gtk_model_simple_get_type (void);
+GtkModelSimple *gtk_model_simple_new (void);
+void gtk_model_simple_node_changed (GtkModelSimple *simple,
+ GtkTreePath *path,
+ GtkTreeIter *iter);
+void gtk_model_simple_node_inserted (GtkModelSimple *simple,
+ GtkTreePath *path,
+ GtkTreeIter *iter);
+void gtk_model_simple_node_child_toggled (GtkModelSimple *simple,
+ GtkTreePath *path,
+ GtkTreeIter *iter);
+void gtk_model_simple_node_deleted (GtkModelSimple *simple,
+ GtkTreePath *path,
+ GtkTreeIter *iter);
-void gtk_model_simple_node_changed (GtkModelSimple *simple,
- GtkTreePath *path,
- GtkTreeNode node);
-void gtk_model_simple_node_inserted (GtkModelSimple *simple,
- GtkTreePath *path,
- GtkTreeNode node);
-void gtk_model_simple_node_child_toggled (GtkModelSimple *simple,
- GtkTreePath *path,
- GtkTreeNode node);
-void gtk_model_simple_node_deleted (GtkModelSimple *simple,
- GtkTreePath *path,
- GtkTreeNode node);
-#endif
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/gtk/gtktreedatalist.c b/gtk/gtktreedatalist.c
index f89eef824..f2fe36e4e 100644
--- a/gtk/gtktreedatalist.c
+++ b/gtk/gtktreedatalist.c
@@ -68,7 +68,7 @@ gtk_tree_data_list_validate_allocator (GAllocator *allocator)
}
void
-gtk_tree_data_list_push_allocator (GAllocator *allocator)
+_gtk_tree_data_list_push_allocator (GAllocator *allocator)
{
G_LOCK (current_allocator);
gtk_tree_data_list_validate_allocator ( allocator );
@@ -78,7 +78,7 @@ gtk_tree_data_list_push_allocator (GAllocator *allocator)
}
void
-gtk_tree_data_list_pop_allocator (void)
+_gtk_tree_data_list_pop_allocator (void)
{
G_LOCK (current_allocator);
if (current_allocator)
@@ -94,7 +94,7 @@ gtk_tree_data_list_pop_allocator (void)
}
GtkTreeDataList *
-gtk_tree_data_list_alloc (void)
+_gtk_tree_data_list_alloc (void)
{
GtkTreeDataList *list;
@@ -120,8 +120,28 @@ gtk_tree_data_list_alloc (void)
}
void
-gtk_tree_data_list_free (GtkTreeDataList *list)
+_gtk_tree_data_list_free (GtkTreeDataList *list,
+ GType *column_headers)
{
+ GtkTreeDataList *tmp;
+ gint i = 0;
+
+ for (tmp = list; tmp; tmp = tmp->next)
+ {
+ switch (column_headers [i])
+ {
+ case G_TYPE_STRING:
+ g_free ((gchar *) tmp->data.v_pointer);
+ break;
+ case G_TYPE_OBJECT:
+ g_object_unref (G_OBJECT (tmp->data.v_pointer));
+ break;
+ default:
+ break;
+ }
+ i++;
+ }
+
G_LOCK (current_allocator);
list->next = current_allocator->free_nodes;
current_allocator->free_nodes = list;
@@ -129,9 +149,9 @@ gtk_tree_data_list_free (GtkTreeDataList *list)
}
void
-gtk_tree_data_list_node_to_value (GtkTreeDataList *list,
- GType type,
- GValue *value)
+_gtk_tree_data_list_node_to_value (GtkTreeDataList *list,
+ GType type,
+ GValue *value)
{
g_value_init (value, type);
@@ -171,8 +191,8 @@ gtk_tree_data_list_node_to_value (GtkTreeDataList *list,
}
void
-gtk_tree_data_list_value_to_node (GtkTreeDataList *list,
- GValue *value)
+_gtk_tree_data_list_value_to_node (GtkTreeDataList *list,
+ GValue *value)
{
switch (value->g_type)
{
diff --git a/gtk/gtktreedatalist.h b/gtk/gtktreedatalist.h
index 78f4db651..1149fdad0 100644
--- a/gtk/gtktreedatalist.h
+++ b/gtk/gtktreedatalist.h
@@ -39,17 +39,17 @@ struct _GtkTreeDataList
} data;
};
-/* FIXME: s/gtk/_gtk/g to make internal */
-void gtk_tree_data_list_push_allocator (GAllocator *allocator);
-void gtk_tree_data_list_pop_allocator (void);
-GtkTreeDataList *gtk_tree_data_list_alloc (void);
-void gtk_tree_data_list_free (GtkTreeDataList *list);
-
-void gtk_tree_data_list_node_to_value (GtkTreeDataList *list,
- GType type,
- GValue *value);
-void gtk_tree_data_list_value_to_node (GtkTreeDataList *list,
- GValue *value);
+void _gtk_tree_data_list_push_allocator (GAllocator *allocator);
+void _gtk_tree_data_list_pop_allocator (void);
+GtkTreeDataList *_gtk_tree_data_list_alloc (void);
+void _gtk_tree_data_list_free (GtkTreeDataList *list,
+ GType *column_headers);
+void _gtk_tree_data_list_node_to_value (GtkTreeDataList *list,
+ GType type,
+ GValue *value);
+void _gtk_tree_data_list_value_to_node (GtkTreeDataList *list,
+ GValue *value);
+
#endif /* __GTK_TREE_DATA_LIST_H__ */
diff --git a/gtk/gtktreemodel.c b/gtk/gtktreemodel.c
index e0f19611b..4e60d9bc0 100644
--- a/gtk/gtktreemodel.c
+++ b/gtk/gtktreemodel.c
@@ -392,6 +392,8 @@ gtk_tree_path_down (GtkTreePath *path)
gint
gtk_tree_model_get_n_columns (GtkTreeModel *tree_model)
{
+ g_return_val_if_fail (tree_model != NULL, 0);
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), 0);
g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->get_n_columns != NULL, 0);
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->get_n_columns) (tree_model);
@@ -418,10 +420,14 @@ gtk_tree_model_get_iter (GtkTreeModel *tree_model,
gint *indices;
gint depth, i;
+ g_return_val_if_fail (tree_model != NULL, FALSE);
+ g_return_val_if_fail (iter != NULL, FALSE);
+ g_return_val_if_fail (path != NULL, FALSE);
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE);
+
if (GTK_TREE_MODEL_GET_IFACE (tree_model)->get_iter != NULL)
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->get_iter) (tree_model, iter, path);
- g_return_val_if_fail (path != NULL, FALSE);
indices = gtk_tree_path_get_indices (path);
depth = gtk_tree_path_get_depth (path);
@@ -440,31 +446,6 @@ gtk_tree_model_get_iter (GtkTreeModel *tree_model,
return TRUE;
}
-
-/**
- * gtk_tree_model_iter_invalid:
- * @tree_model: A #GtkTreeModel.
- * @iter: The #GtkTreeIter.
- *
- * Tests the validity of @iter, and returns TRUE if it is invalid.
- *
- * Return value: TRUE, if @iter is invalid.
- **/
-gboolean
-gtk_tree_model_iter_invalid (GtkTreeModel *tree_model,
- GtkTreeIter *iter)
-{
- g_return_val_if_fail (tree_model != NULL, FALSE);
- if (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_invalid)
- return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_invalid) (tree_model, iter);
-
- /* Default implementation. Returns false if iter is false, or the stamp is 0 */
- if (iter == NULL || iter->stamp == 0)
- return TRUE;
-
- return FALSE;
-}
-
/**
* gtk_tree_model_get_path:
* @tree_model: A #GtkTreeModel.
@@ -479,13 +460,16 @@ GtkTreePath *
gtk_tree_model_get_path (GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
+ g_return_val_if_fail (tree_model != NULL, NULL);
+ g_return_val_if_fail (iter != NULL, NULL);
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), NULL);
g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->get_path != NULL, NULL);
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->get_path) (tree_model, iter);
}
/**
- * gtk_tree_model_iter_get_value:
+ * gtk_tree_model_get_value:
* @tree_model: A #GtkTreeModel.
* @iter: The #GtkTreeIter.
* @column: The column to lookup the value at.
@@ -495,14 +479,18 @@ gtk_tree_model_get_path (GtkTreeModel *tree_model,
* #g_value_unset needs to be called on it.
**/
void
-gtk_tree_model_iter_get_value (GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gint column,
- GValue *value)
+gtk_tree_model_get_value (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value)
{
- g_return_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_get_value != NULL);
+ g_return_if_fail (tree_model != NULL);
+ g_return_if_fail (iter != NULL);
+ g_return_if_fail (GTK_IS_TREE_MODEL (tree_model));
+ g_return_if_fail (value != NULL);
+ g_return_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->get_value != NULL);
- (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_get_value) (tree_model, iter, column, value);
+ (* GTK_TREE_MODEL_GET_IFACE (tree_model)->get_value) (tree_model, iter, column, value);
}
/**
@@ -519,6 +507,9 @@ gboolean
gtk_tree_model_iter_next (GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
+ g_return_val_if_fail (tree_model != NULL, FALSE);
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE);
+ g_return_val_if_fail (iter != NULL, FALSE);
g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_next != NULL, FALSE);
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_next) (tree_model, iter);
@@ -541,6 +532,9 @@ gtk_tree_model_iter_children (GtkTreeModel *tree_model,
GtkTreeIter *iter,
GtkTreeIter *parent)
{
+ g_return_val_if_fail (tree_model != NULL, FALSE);
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE);
+ g_return_val_if_fail (iter != NULL, FALSE);
g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_children != NULL, FALSE);
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_children) (tree_model, iter, parent);
@@ -559,6 +553,9 @@ gboolean
gtk_tree_model_iter_has_child (GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
+ g_return_val_if_fail (tree_model != NULL, FALSE);
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE);
+ g_return_val_if_fail (iter != NULL, FALSE);
g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_has_child != NULL, FALSE);
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_has_child) (tree_model, iter);
@@ -577,7 +574,10 @@ gint
gtk_tree_model_iter_n_children (GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
- g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_n_children != NULL, -1);
+ g_return_val_if_fail (tree_model != NULL, 0);
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), 0);
+ g_return_val_if_fail (iter != NULL, 0);
+ g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_n_children != NULL, 0);
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_n_children) (tree_model, iter);
}
@@ -602,6 +602,10 @@ gtk_tree_model_iter_nth_child (GtkTreeModel *tree_model,
GtkTreeIter *parent,
gint n)
{
+ g_return_val_if_fail (tree_model != NULL, FALSE);
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE);
+ g_return_val_if_fail (iter != NULL, FALSE);
+ g_return_val_if_fail (n >= 0, FALSE);
g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_nth_child != NULL, FALSE);
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_nth_child) (tree_model, iter, parent, n);
diff --git a/gtk/gtktreemodel.h b/gtk/gtktreemodel.h
index 364a3c8d9..fce77d607 100644
--- a/gtk/gtktreemodel.h
+++ b/gtk/gtktreemodel.h
@@ -71,11 +71,9 @@ struct _GtkTreeModelIface
gboolean (* get_iter) (GtkTreeModel *tree_model,
GtkTreeIter *iter,
GtkTreePath *path);
- gboolean (* iter_invalid) (GtkTreeModel *tree_model,
- GtkTreeIter *iter);
GtkTreePath *(* get_path) (GtkTreeModel *tree_model,
GtkTreeIter *iter);
- void (* iter_get_value) (GtkTreeModel *tree_model,
+ void (* get_value) (GtkTreeModel *tree_model,
GtkTreeIter *iter,
gint column,
GValue *value);
@@ -83,7 +81,7 @@ struct _GtkTreeModelIface
GtkTreeIter *iter);
gboolean (* iter_children) (GtkTreeModel *tree_model,
GtkTreeIter *iter,
- GtkTreeIter *child);
+ GtkTreeIter *parent);
gboolean (* iter_has_child) (GtkTreeModel *tree_model,
GtkTreeIter *iter);
gint (* iter_n_children) (GtkTreeModel *tree_model,
@@ -94,7 +92,7 @@ struct _GtkTreeModelIface
gint n);
gboolean (* iter_parent) (GtkTreeModel *tree_model,
GtkTreeIter *iter,
- GtkTreeIter *parent);
+ GtkTreeIter *child);
};
@@ -133,11 +131,9 @@ GType gtk_tree_model_get_column_type (GtkTreeModel *tree_model,
gboolean gtk_tree_model_get_iter (GtkTreeModel *tree_model,
GtkTreeIter *iter,
GtkTreePath *path);
-gboolean gtk_tree_model_iter_invalid (GtkTreeModel *tree_model,
- GtkTreeIter *iter);
GtkTreePath *gtk_tree_model_get_path (GtkTreeModel *tree_model,
GtkTreeIter *iter);
-void gtk_tree_model_iter_get_value (GtkTreeModel *tree_model,
+void gtk_tree_model_get_value (GtkTreeModel *tree_model,
GtkTreeIter *iter,
gint column,
GValue *value);
diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c
index a557ce4f1..3454202ad 100644
--- a/gtk/gtktreestore.c
+++ b/gtk/gtktreestore.c
@@ -43,7 +43,7 @@ static void gtk_tree_store_tree_model_init (GtkTreeModelIface *iface);
static gint gtk_tree_store_get_n_columns (GtkTreeModel *tree_model);
static GtkTreePath *gtk_tree_store_get_path (GtkTreeModel *tree_model,
GtkTreeIter *iter);
-static void gtk_tree_store_iter_get_value (GtkTreeModel *tree_model,
+static void gtk_tree_store_get_value (GtkTreeModel *tree_model,
GtkTreeIter *iter,
gint column,
GValue *value);
@@ -152,7 +152,7 @@ gtk_tree_store_tree_model_init (GtkTreeModelIface *iface)
{
iface->get_n_columns = gtk_tree_store_get_n_columns;
iface->get_path = gtk_tree_store_get_path;
- iface->iter_get_value = gtk_tree_store_iter_get_value;
+ iface->get_value = gtk_tree_store_get_value;
iface->iter_next = gtk_tree_store_iter_next;
iface->iter_children = gtk_tree_store_iter_children;
iface->iter_has_child = gtk_tree_store_iter_has_child;
@@ -312,10 +312,10 @@ gtk_tree_store_get_path (GtkTreeModel *tree_model,
static void
-gtk_tree_store_iter_get_value (GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gint column,
- GValue *value)
+gtk_tree_store_get_value (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value)
{
GtkTreeDataList *list;
gint tmp_column = column;
@@ -333,9 +333,9 @@ gtk_tree_store_iter_get_value (GtkTreeModel *tree_model,
if (list)
{
- gtk_tree_data_list_node_to_value (list,
- GTK_TREE_STORE (tree_model)->column_headers[column],
- value);
+ _gtk_tree_data_list_node_to_value (list,
+ GTK_TREE_STORE (tree_model)->column_headers[column],
+ value);
}
else
{
@@ -452,10 +452,10 @@ gtk_tree_store_iter_parent (GtkTreeModel *tree_model,
* manipulations on it's own.
*/
void
-gtk_tree_store_iter_set_cell (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- gint column,
- GValue *value)
+gtk_tree_store_set_cell (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value)
{
GtkTreeDataList *list;
GtkTreeDataList *prev;
@@ -470,7 +470,7 @@ gtk_tree_store_iter_set_cell (GtkTreeStore *tree_store,
{
if (column == 0)
{
- gtk_tree_data_list_value_to_node (list, value);
+ _gtk_tree_data_list_value_to_node (list, value);
return;
}
@@ -481,29 +481,32 @@ gtk_tree_store_iter_set_cell (GtkTreeStore *tree_store,
if (G_NODE (iter->tree_node)->data == NULL)
{
- G_NODE (iter->tree_node)->data = list = gtk_tree_data_list_alloc ();
+ G_NODE (iter->tree_node)->data = list = _gtk_tree_data_list_alloc ();
list->next = NULL;
}
else
{
- list = prev->next = gtk_tree_data_list_alloc ();
+ list = prev->next = _gtk_tree_data_list_alloc ();
list->next = NULL;
}
while (column != 0)
{
- list->next = gtk_tree_data_list_alloc ();
+ list->next = _gtk_tree_data_list_alloc ();
list = list->next;
list->next = NULL;
column --;
}
- gtk_tree_data_list_value_to_node (list, value);
+ _gtk_tree_data_list_value_to_node (list, value);
+ gtk_signal_emit_by_name (GTK_OBJECT (tree_store),
+ "changed",
+ NULL, iter);
}
void
-gtk_tree_store_iter_setv (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- va_list var_args)
+gtk_tree_store_setv (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ va_list var_args)
{
gint column;
@@ -535,10 +538,10 @@ gtk_tree_store_iter_setv (GtkTreeStore *tree_store,
break;
}
- gtk_tree_store_iter_set_cell (tree_store,
- iter,
- column,
- &value);
+ gtk_tree_store_set_cell (tree_store,
+ iter,
+ column,
+ &value);
g_value_unset (&value);
@@ -547,23 +550,23 @@ gtk_tree_store_iter_setv (GtkTreeStore *tree_store,
}
void
-gtk_tree_store_iter_set (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- ...)
+gtk_tree_store_set (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ ...)
{
va_list var_args;
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
va_start (var_args, iter);
- gtk_tree_store_iter_setv (tree_store, iter, var_args);
+ gtk_tree_store_setv (tree_store, iter, var_args);
va_end (var_args);
}
void
-gtk_tree_store_iter_getv (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- va_list var_args)
+gtk_tree_store_getv (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ va_list var_args)
{
gint column;
@@ -582,7 +585,7 @@ gtk_tree_store_iter_getv (GtkTreeStore *tree_store,
break;
}
- gtk_tree_store_iter_get_value (GTK_TREE_MODEL (tree_store), iter, column, &value);
+ gtk_tree_store_get_value (GTK_TREE_MODEL (tree_store), iter, column, &value);
G_VALUE_LCOPY (&value, var_args, &error);
if (error)
@@ -603,24 +606,25 @@ gtk_tree_store_iter_getv (GtkTreeStore *tree_store,
}
void
-gtk_tree_store_iter_get (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- ...)
+gtk_tree_store_get (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ ...)
{
va_list var_args;
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
va_start (var_args, iter);
- gtk_tree_store_iter_getv (tree_store, iter, var_args);
+ gtk_tree_store_getv (tree_store, iter, var_args);
va_end (var_args);
}
void
-gtk_tree_store_iter_remove (GtkTreeStore *model,
- GtkTreeIter *iter)
+gtk_tree_store_remove (GtkTreeStore *model,
+ GtkTreeIter *iter)
{
GtkTreePath *path;
+
GNode *parent;
g_return_if_fail (model != NULL);
@@ -628,8 +632,14 @@ gtk_tree_store_iter_remove (GtkTreeStore *model,
parent = G_NODE (iter->tree_node)->parent;
+ if (G_NODE (iter->tree_node)->data)
+ _gtk_tree_data_list_free ((GtkTreeDataList *) G_NODE (iter->tree_node)->data,
+ model->column_headers);
+
path = gtk_tree_store_get_path (GTK_TREE_MODEL (model), iter);
g_node_destroy (G_NODE (iter->tree_node));
+
+ model->stamp++;
gtk_signal_emit_by_name (GTK_OBJECT (model),
"deleted",
path);
@@ -645,10 +655,10 @@ gtk_tree_store_iter_remove (GtkTreeStore *model,
}
void
-gtk_tree_store_iter_insert (GtkTreeStore *model,
- GtkTreeIter *iter,
- GtkTreeIter *parent,
- gint position)
+gtk_tree_store_insert (GtkTreeStore *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ gint position)
{
GtkTreePath *path;
@@ -670,10 +680,10 @@ gtk_tree_store_iter_insert (GtkTreeStore *model,
}
void
-gtk_tree_store_iter_insert_before (GtkTreeStore *model,
- GtkTreeIter *iter,
- GtkTreeIter *parent,
- GtkTreeIter *sibling)
+gtk_tree_store_insert_before (GtkTreeStore *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ GtkTreeIter *sibling)
{
GtkTreePath *path;
GNode *parent_node = NULL;
@@ -708,10 +718,10 @@ gtk_tree_store_iter_insert_before (GtkTreeStore *model,
}
void
-gtk_tree_store_iter_insert_after (GtkTreeStore *model,
- GtkTreeIter *iter,
- GtkTreeIter *parent,
- GtkTreeIter *sibling)
+gtk_tree_store_insert_after (GtkTreeStore *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ GtkTreeIter *sibling)
{
GtkTreePath *path;
GNode *parent_node;
@@ -746,9 +756,9 @@ gtk_tree_store_iter_insert_after (GtkTreeStore *model,
}
void
-gtk_tree_store_iter_prepend (GtkTreeStore *model,
- GtkTreeIter *iter,
- GtkTreeIter *parent)
+gtk_tree_store_prepend (GtkTreeStore *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent)
{
GNode *parent_node;
@@ -793,14 +803,14 @@ gtk_tree_store_iter_prepend (GtkTreeStore *model,
}
else
{
- gtk_tree_store_iter_insert_after (model, iter, parent, NULL);
+ gtk_tree_store_insert_after (model, iter, parent, NULL);
}
}
void
-gtk_tree_store_iter_append (GtkTreeStore *model,
- GtkTreeIter *iter,
- GtkTreeIter *parent)
+gtk_tree_store_append (GtkTreeStore *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent)
{
GNode *parent_node;
@@ -845,13 +855,13 @@ gtk_tree_store_iter_append (GtkTreeStore *model,
}
else
{
- gtk_tree_store_iter_insert_before (model, iter, parent, NULL);
+ gtk_tree_store_insert_before (model, iter, parent, NULL);
}
}
void
-gtk_tree_store_get_root (GtkTreeStore *model,
- GtkTreeIter *iter)
+gtk_tree_store_get_root_iter (GtkTreeStore *model,
+ GtkTreeIter *iter)
{
g_return_if_fail (model != NULL);
g_return_if_fail (GTK_IS_TREE_STORE (model));
@@ -863,9 +873,9 @@ gtk_tree_store_get_root (GtkTreeStore *model,
gboolean
-gtk_tree_store_iter_is_ancestor (GtkTreeStore *model,
- GtkTreeIter *iter,
- GtkTreeIter *descendant)
+gtk_tree_store_is_ancestor (GtkTreeStore *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *descendant)
{
g_return_val_if_fail (model != NULL, FALSE);
g_return_val_if_fail (GTK_IS_TREE_STORE (model), FALSE);
diff --git a/gtk/gtktreestore.h b/gtk/gtktreestore.h
index 3f65aafbf..a333db5ca 100644
--- a/gtk/gtktreestore.h
+++ b/gtk/gtktreestore.h
@@ -66,58 +66,59 @@ struct _GtkTreeStoreClass
};
-GtkType gtk_tree_store_get_type (void);
-GtkTreeStore *gtk_tree_store_new (void);
-GtkTreeStore *gtk_tree_store_new_with_values (gint n_columns,
- ...);
-void gtk_tree_store_set_n_columns (GtkTreeStore *tree_store,
- gint n_columns);
-void gtk_tree_store_set_column_type (GtkTreeStore *store,
- gint column,
- GType type);
-void gtk_tree_store_iter_set_cell (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- gint column,
- GValue *value);
-void gtk_tree_store_iter_set (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- ...);
-void gtk_tree_store_iter_setv (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- va_list var_args);
-void gtk_tree_store_iter_get (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- ...);
-void gtk_tree_store_iter_getv (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- va_list var_args);
-void gtk_tree_store_iter_remove (GtkTreeStore *tree_store,
- GtkTreeIter *iter);
-void gtk_tree_store_iter_insert (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- GtkTreeIter *parent,
- gint position);
-void gtk_tree_store_iter_insert_before (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- GtkTreeIter *parent,
- GtkTreeIter *sibling);
-void gtk_tree_store_iter_insert_after (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- GtkTreeIter *parent,
- GtkTreeIter *sibling);
-void gtk_tree_store_iter_prepend (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- GtkTreeIter *parent);
-void gtk_tree_store_iter_append (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- GtkTreeIter *parent);
-void gtk_tree_store_get_root (GtkTreeStore *tree_store,
- GtkTreeIter *iter);
-gboolean gtk_tree_store_iter_is_ancestor (GtkTreeStore *tree_store,
- GtkTreeIter *iter,
- GtkTreeIter *descendant);
-gint gtk_tree_store_iter_depth (GtkTreeStore *tree_store,
- GtkTreeIter *iter);
+GtkType gtk_tree_store_get_type (void);
+GtkTreeStore *gtk_tree_store_new (void);
+
+GtkTreeStore *gtk_tree_store_new_with_values (gint n_columns,
+ ...);
+void gtk_tree_store_set_n_columns (GtkTreeStore *tree_store,
+ gint n_columns);
+void gtk_tree_store_set_column_type (GtkTreeStore *store,
+ gint column,
+ GType type);
+void gtk_tree_store_set_cell (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value);
+void gtk_tree_store_set (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ ...);
+void gtk_tree_store_setv (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ va_list var_args);
+void gtk_tree_store_get (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ ...);
+void gtk_tree_store_getv (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ va_list var_args);
+void gtk_tree_store_remove (GtkTreeStore *tree_store,
+ GtkTreeIter *iter);
+void gtk_tree_store_insert (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ gint position);
+void gtk_tree_store_insert_before (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ GtkTreeIter *sibling);
+void gtk_tree_store_insert_after (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ GtkTreeIter *sibling);
+void gtk_tree_store_prepend (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent);
+void gtk_tree_store_append (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent);
+void gtk_tree_store_get_root_iter (GtkTreeStore *tree_store,
+ GtkTreeIter *iter);
+gboolean gtk_tree_store_is_ancestor (GtkTreeStore *tree_store,
+ GtkTreeIter *iter,
+ GtkTreeIter *descendant);
+gint gtk_tree_store_iter_depth (GtkTreeStore *tree_store,
+ GtkTreeIter *iter);
#ifdef __cplusplus
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 26afe3899..15821411c 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -1917,7 +1917,7 @@ gtk_tree_view_changed (GtkTreeModel *model,
gint height;
gboolean dirty_marked;
- g_return_if_fail (path != NULL || node != NULL);
+ g_return_if_fail (path != NULL || iter != NULL);
if (path == NULL)
path = gtk_tree_model_get_path (model, iter);
@@ -2067,7 +2067,7 @@ gtk_tree_view_child_toggled (GtkTreeModel *model,
GtkRBTree *tree;
GtkRBNode *node;
- g_return_if_fail (path != NULL || node != NULL);
+ g_return_if_fail (path != NULL || iter != NULL);
if (iter)
real_iter = *iter;
@@ -2237,9 +2237,6 @@ gtk_tree_view_build_tree (GtkTreeView *tree_view,
GtkRBNode *temp = NULL;
gint max_height;
- if (gtk_tree_model_iter_invalid (tree_view->priv->model, iter))
- return;
-
do
{
max_height = 0;
@@ -2285,10 +2282,6 @@ gtk_tree_view_calc_size (GtkTreeView *tree_view,
gint max_height;
gint i;
- /* FIXME: Make this function robust against internal inconsistencies! */
- if (gtk_tree_model_iter_invalid (tree_view->priv->model, iter))
- return;
-
TREE_VIEW_INTERNAL_ASSERT_VOID (tree != NULL);
while (temp->left != tree->nil)
@@ -2399,11 +2392,6 @@ gtk_tree_view_discover_dirty (GtkTreeView *tree_view,
GtkTreeIter child;
gboolean is_all_dirty;
- /* FIXME: Make this function robust against internal inconsistencies! */
- if (gtk_tree_model_iter_invalid (tree_view->priv->model,
- iter))
- return;
-
TREE_VIEW_INTERNAL_ASSERT_VOID (tree != NULL);
while (temp->left != tree->nil)
diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c
index af0afc7cc..8c4c43f2e 100644
--- a/gtk/gtktreeviewcolumn.c
+++ b/gtk/gtktreeviewcolumn.c
@@ -336,10 +336,9 @@ gtk_tree_view_column_set_cell_data (GtkTreeViewColumn *tree_column,
while (list && list->next)
{
- gtk_tree_model_iter_get_value (tree_model,
- iter,
- GPOINTER_TO_INT (list->next->data),
- &value);
+ gtk_tree_model_get_value (tree_model, iter,
+ GPOINTER_TO_INT (list->next->data),
+ &value);
g_object_set_param (cell, (gchar *) list->data, &value);
g_value_unset (&value);
list = list->next->next;
diff --git a/gtk/treestoretest.c b/gtk/treestoretest.c
index 84423e97a..d1c311c83 100644
--- a/gtk/treestoretest.c
+++ b/gtk/treestoretest.c
@@ -1,7 +1,7 @@
#include <gtk/gtk.h>
#include <stdlib.h>
-GtkObject *model;
+GtkTreeStore *model;
static void
selection_changed (GtkTreeSelection *selection,
@@ -21,7 +21,7 @@ node_set (GtkTreeIter *iter)
gchar *str;
str = g_strdup_printf ("FOO: %d", i++);
- gtk_tree_store_iter_set (GTK_TREE_STORE (model), iter, 0, str, -1);
+ gtk_tree_store_set (model, iter, 0, str, -1);
g_free (str);
}
@@ -33,8 +33,7 @@ iter_remove (GtkWidget *button, GtkTreeView *tree_view)
if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
&selected))
{
- gtk_tree_store_iter_remove (GTK_TREE_STORE (model),
- &selected);
+ gtk_tree_store_remove (model, &selected);
}
}
@@ -49,17 +48,17 @@ iter_insert (GtkWidget *button, GtkTreeView *tree_view)
if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
&selected))
{
- gtk_tree_store_iter_insert (GTK_TREE_STORE (model),
- &iter,
- &selected,
- atoi (gtk_entry_get_text (GTK_ENTRY (entry))));
+ gtk_tree_store_insert (model,
+ &iter,
+ &selected,
+ atoi (gtk_entry_get_text (GTK_ENTRY (entry))));
}
else
{
- gtk_tree_store_iter_insert (GTK_TREE_STORE (model),
- &iter,
- NULL,
- atoi (gtk_entry_get_text (GTK_ENTRY (entry))));
+ gtk_tree_store_insert (model,
+ &iter,
+ NULL,
+ atoi (gtk_entry_get_text (GTK_ENTRY (entry))));
}
node_set (&iter);
@@ -74,17 +73,17 @@ iter_insert_before (GtkWidget *button, GtkTreeView *tree_view)
if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
&selected))
{
- gtk_tree_store_iter_insert_before (GTK_TREE_STORE (model),
- &iter,
- NULL,
- &selected);
+ gtk_tree_store_insert_before (model,
+ &iter,
+ NULL,
+ &selected);
}
else
{
- gtk_tree_store_iter_insert_before (GTK_TREE_STORE (model),
- &iter,
- NULL,
- NULL);
+ gtk_tree_store_insert_before (model,
+ &iter,
+ NULL,
+ NULL);
}
node_set (&iter);
@@ -99,17 +98,17 @@ iter_insert_after (GtkWidget *button, GtkTreeView *tree_view)
if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
&selected))
{
- gtk_tree_store_iter_insert_after (GTK_TREE_STORE (model),
- &iter,
- NULL,
- &selected);
+ gtk_tree_store_insert_after (model,
+ &iter,
+ NULL,
+ &selected);
}
else
{
- gtk_tree_store_iter_insert_after (GTK_TREE_STORE (model),
- &iter,
- NULL,
- &selected);
+ gtk_tree_store_insert_after (model,
+ &iter,
+ NULL,
+ &selected);
}
node_set (&iter);
@@ -124,15 +123,15 @@ iter_prepend (GtkWidget *button, GtkTreeView *tree_view)
if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
&selected))
{
- gtk_tree_store_iter_prepend (GTK_TREE_STORE (model),
- &iter,
- &selected);
+ gtk_tree_store_prepend (model,
+ &iter,
+ &selected);
}
else
{
- gtk_tree_store_iter_prepend (GTK_TREE_STORE (model),
- &iter,
- NULL);
+ gtk_tree_store_prepend (model,
+ &iter,
+ NULL);
}
node_set (&iter);
@@ -147,15 +146,11 @@ iter_append (GtkWidget *button, GtkTreeView *tree_view)
if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
&selected))
{
- gtk_tree_store_iter_append (GTK_TREE_STORE (model),
- &iter,
- &selected);
+ gtk_tree_store_append (model, &iter, &selected);
}
else
{
- gtk_tree_store_iter_append (GTK_TREE_STORE (model),
- &iter,
- NULL);
+ gtk_tree_store_append (model, &iter, NULL);
}
node_set (&iter);
@@ -194,7 +189,7 @@ make_window ()
gtk_signal_connect (GTK_OBJECT (window), "destroy", gtk_main_quit, NULL);
/* buttons */
- button = gtk_button_new_with_label ("gtk_tree_store_iter_remove");
+ button = gtk_button_new_with_label ("gtk_tree_store_remove");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_signal_connect (GTK_OBJECT (selection),
"selection_changed",
@@ -203,7 +198,7 @@ make_window ()
gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_remove, tree_view);
gtk_widget_set_sensitive (button, FALSE);
- button = gtk_button_new_with_label ("gtk_tree_store_iter_insert");
+ button = gtk_button_new_with_label ("gtk_tree_store_insert");
hbox = gtk_hbox_new (FALSE, 8);
entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
@@ -213,7 +208,7 @@ make_window ()
gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_insert, tree_view);
- button = gtk_button_new_with_label ("gtk_tree_store_iter_insert_before");
+ button = gtk_button_new_with_label ("gtk_tree_store_insert_before");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_insert_before, tree_view);
gtk_signal_connect (GTK_OBJECT (selection),
@@ -222,7 +217,7 @@ make_window ()
button);
gtk_widget_set_sensitive (button, FALSE);
- button = gtk_button_new_with_label ("gtk_tree_store_iter_insert_after");
+ button = gtk_button_new_with_label ("gtk_tree_store_insert_after");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_insert_after, tree_view);
gtk_signal_connect (GTK_OBJECT (selection),
@@ -231,11 +226,11 @@ make_window ()
button);
gtk_widget_set_sensitive (button, FALSE);
- button = gtk_button_new_with_label ("gtk_tree_store_iter_prepend");
+ button = gtk_button_new_with_label ("gtk_tree_store_prepend");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_prepend, tree_view);
- button = gtk_button_new_with_label ("gtk_tree_store_iter_append");
+ button = gtk_button_new_with_label ("gtk_tree_store_append");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_append, tree_view);