summaryrefslogtreecommitdiff
path: root/gtk/gtktreestore.c
diff options
context:
space:
mode:
authorJonathan Blandford <jrb@redhat.com>2001-07-09 17:09:35 +0000
committerJonathan Blandford <jrb@src.gnome.org>2001-07-09 17:09:35 +0000
commita4a7652d09df15bb8c34c8a78d1eacdef7b41bf7 (patch)
tree286c3e4d269e20312abcfc8c74c3cb87d52758cf /gtk/gtktreestore.c
parentab28b9389c39ab718f7f0f72f9caff2cb9acdf8b (diff)
downloadgtk+-a4a7652d09df15bb8c34c8a78d1eacdef7b41bf7.tar.gz
remove gtk_tree_model_get_first in favor of gtk_tree_model_get_iter_root.
Mon Jul 9 12:50:51 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreemodel.c: remove gtk_tree_model_get_first in favor of gtk_tree_model_get_iter_root. * gtk/gtkliststore.c: Add a bunch of g_return statements. (gtk_list_store_iter_n_children): Fix up. * gtk/gtktreestore.c: Add a bunch of g_return statements.
Diffstat (limited to 'gtk/gtktreestore.c')
-rw-r--r--gtk/gtktreestore.c66
1 files changed, 45 insertions, 21 deletions
diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c
index e4e55e2d46..c0376b6921 100644
--- a/gtk/gtktreestore.c
+++ b/gtk/gtktreestore.c
@@ -26,6 +26,7 @@
#define G_NODE(node) ((GNode *)node)
#define GTK_TREE_STORE_IS_SORTED(tree) (GTK_TREE_STORE (tree)->sort_column_id != -1)
+#define VALID_ITER(iter, tree_store) (iter!= NULL && iter->user_data != NULL && tree_store->stamp == iter->stamp)
static void gtk_tree_store_init (GtkTreeStore *tree_store);
static void gtk_tree_store_class_init (GtkTreeStoreClass *tree_store_class);
@@ -703,8 +704,7 @@ gtk_tree_store_set_value (GtkTreeStore *tree_store,
gint orig_column = column;
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
- g_return_if_fail (iter != NULL);
- g_return_if_fail (GTK_TREE_STORE (tree_store)->stamp == iter->stamp);
+ g_return_if_fail (VALID_ITER (iter, tree_store));
g_return_if_fail (column >= 0 && column < tree_store->n_columns);
g_return_if_fail (G_IS_VALUE (value));
@@ -804,6 +804,7 @@ gtk_tree_store_set_valist (GtkTreeStore *tree_store,
gint column;
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
+ g_return_if_fail (VALID_ITER (iter, tree_store));
column = va_arg (var_args, gint);
@@ -864,6 +865,7 @@ gtk_tree_store_set (GtkTreeStore *tree_store,
va_list var_args;
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
+ g_return_if_fail (VALID_ITER (iter, tree_store));
va_start (var_args, iter);
gtk_tree_store_set_valist (tree_store, iter, var_args);
@@ -878,8 +880,8 @@ gtk_tree_store_remove (GtkTreeStore *model,
GtkTreeIter new_iter = {0,};
GNode *parent;
- g_return_if_fail (model != NULL);
g_return_if_fail (GTK_IS_TREE_STORE (model));
+ g_return_if_fail (VALID_ITER (iter, model));
parent = G_NODE (iter->user_data)->parent;
@@ -895,13 +897,29 @@ gtk_tree_store_remove (GtkTreeStore *model,
model->stamp++;
gtk_tree_model_deleted (GTK_TREE_MODEL (model), path);
- if (parent != G_NODE (model->root) && parent->children == NULL)
+ if (parent != G_NODE (model->root))
{
- gtk_tree_path_up (path);
+ /* child_toggled */
+ if (parent->children == NULL)
+ {
+ gtk_tree_path_up (path);
+
+ new_iter.stamp = model->stamp;
+ new_iter.user_data = parent;
+ gtk_tree_model_has_child_toggled (GTK_TREE_MODEL (model), path, &new_iter);
+ }
- new_iter.stamp = model->stamp;
- new_iter.user_data = parent;
- gtk_tree_model_has_child_toggled (GTK_TREE_MODEL (model), path, &new_iter);
+ /* revalidate iter */
+ while (parent != G_NODE (model->root))
+ {
+ if (parent->next != NULL)
+ {
+ iter->stamp = model->stamp;
+ iter->user_data = parent->next;
+ break;
+ }
+ parent = parent->parent;
+ }
}
gtk_tree_path_free (path);
}
@@ -915,8 +933,9 @@ gtk_tree_store_insert (GtkTreeStore *model,
GtkTreePath *path;
GNode *parent_node;
- g_return_if_fail (model != NULL);
g_return_if_fail (GTK_IS_TREE_STORE (model));
+ if (parent)
+ g_return_if_fail (VALID_ITER (parent, model));
if (parent)
parent_node = parent->user_data;
@@ -945,9 +964,12 @@ gtk_tree_store_insert_before (GtkTreeStore *model,
GNode *parent_node = NULL;
GNode *new_node;
- g_return_if_fail (model != NULL);
g_return_if_fail (GTK_IS_TREE_STORE (model));
g_return_if_fail (iter != NULL);
+ if (parent != NULL)
+ g_return_if_fail (VALID_ITER (parent, model));
+ if (sibling != NULL)
+ g_return_if_fail (VALID_ITER (sibling, model));
new_node = g_node_new (NULL);
@@ -959,8 +981,7 @@ gtk_tree_store_insert_before (GtkTreeStore *model,
parent_node = G_NODE (parent->user_data);
else
{
- g_return_if_fail (G_NODE (sibling->user_data)->parent ==
- G_NODE (parent->user_data));
+ g_return_if_fail (G_NODE (sibling->user_data)->parent == G_NODE (parent->user_data));
parent_node = G_NODE (parent->user_data);
}
@@ -989,9 +1010,12 @@ gtk_tree_store_insert_after (GtkTreeStore *model,
GNode *parent_node;
GNode *new_node;
- g_return_if_fail (model != NULL);
g_return_if_fail (GTK_IS_TREE_STORE (model));
g_return_if_fail (iter != NULL);
+ if (parent != NULL)
+ g_return_if_fail (VALID_ITER (parent, model));
+ if (sibling != NULL)
+ g_return_if_fail (VALID_ITER (sibling, model));
new_node = g_node_new (NULL);
@@ -1031,9 +1055,10 @@ gtk_tree_store_prepend (GtkTreeStore *model,
{
GNode *parent_node;
- g_return_if_fail (model != NULL);
g_return_if_fail (GTK_IS_TREE_STORE (model));
g_return_if_fail (iter != NULL);
+ if (parent != NULL)
+ g_return_if_fail (VALID_ITER (parent, model));
if (parent == NULL)
parent_node = model->root;
@@ -1077,9 +1102,10 @@ gtk_tree_store_append (GtkTreeStore *model,
{
GNode *parent_node;
- g_return_if_fail (model != NULL);
g_return_if_fail (GTK_IS_TREE_STORE (model));
g_return_if_fail (iter != NULL);
+ if (parent != NULL)
+ g_return_if_fail (VALID_ITER (parent, model));
if (parent == NULL)
parent_node = model->root;
@@ -1122,10 +1148,9 @@ 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);
- g_return_val_if_fail (iter != NULL, FALSE);
- g_return_val_if_fail (descendant != NULL, FALSE);
+ g_return_val_if_fail (VALID_ITER (iter, model), FALSE);
+ g_return_val_if_fail (VALID_ITER (descendant, model), FALSE);
return g_node_is_ancestor (G_NODE (iter->user_data),
G_NODE (descendant->user_data));
@@ -1136,9 +1161,8 @@ gint
gtk_tree_store_iter_depth (GtkTreeStore *model,
GtkTreeIter *iter)
{
- g_return_val_if_fail (model != NULL, 0);
g_return_val_if_fail (GTK_IS_TREE_STORE (model), 0);
- g_return_val_if_fail (iter != NULL, 0);
+ g_return_val_if_fail (VALID_ITER (iter, model), 0);
return g_node_depth (G_NODE (iter->user_data)) - 1;
}
@@ -1148,6 +1172,7 @@ void
gtk_tree_store_clear (GtkTreeStore *tree_store)
{
GtkTreeIter iter;
+
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
while (G_NODE (tree_store->root)->children)
@@ -1161,7 +1186,6 @@ gtk_tree_store_clear (GtkTreeStore *tree_store)
/* DND */
-
static gboolean
gtk_tree_store_drag_data_delete (GtkTreeDragSource *drag_source,
GtkTreePath *path)