Discussed in #76249.

Tue Jun  4 19:24:41 2002  Kristian Rietveld  <kris@gtk.org>

        Discussed in #76249.

        * gtk/gtkliststore.[ch]: made gtk_list_store_remove return a gboolean,
        added gtk_list_store_iter_is_valid.

        * gtk/gtktreestore.[ch]: made gtk_tree_store_remove return a gboolean,
        added gtk_tree_store_iter_is_valid.

        * gtk/gtktreemodelsort.[ch]: added VALID_ITER macro as in liststore
        and treestore sources, added gtk_tree_model_sort_iter_is_valid.
This commit is contained in:
Kristian Rietveld
2002-06-04 17:17:49 +00:00
committed by Kristian Rietveld
parent 46006990c8
commit f39b189d5c
12 changed files with 234 additions and 8 deletions

View File

@ -101,6 +101,8 @@ enum {
#define NO_SORT_FUNC ((GtkTreeIterCompareFunc) 0x1)
#define VALID_ITER(iter, tree_model_sort) (iter != NULL && iter->user_data != NULL && iter->user_data2 != NULL && tree_model_sort->stamp == iter->stamp)
/* general (object/interface init, etc) */
static void gtk_tree_model_sort_init (GtkTreeModelSort *tree_model_sort);
static void gtk_tree_model_sort_class_init (GtkTreeModelSortClass *tree_model_sort_class);
@ -2251,3 +2253,50 @@ gtk_tree_model_sort_clear_cache (GtkTreeModelSort *tree_model_sort)
if (tree_model_sort->zero_ref_count)
gtk_tree_model_sort_clear_cache_helper (tree_model_sort, (SortLevel *)tree_model_sort->root);
}
static gboolean
gtk_tree_model_sort_iter_is_valid_helper (GtkTreeIter *iter,
SortLevel *level)
{
gint i;
for (i = 0; i < level->array->len; i++)
{
SortElt *elt = &g_array_index (level->array, SortElt, i);
if (iter->user_data == level && iter->user_data2 == elt)
return TRUE;
if (elt->children)
if (gtk_tree_model_sort_iter_is_valid_helper (iter, elt->children))
return TRUE;
}
return FALSE;
}
/**
* gtk_tree_model_sort_iter_is_valid:
* @tree_model_sort: A #GtkTreeModelSort.
* @iter: A #GtkTreeIter.
*
* WARNING: This function is slow. Only use it for debugging and/or testing
* purposes.
*
* Checks if the given iter is a valid iter for this #GtkTreeModelSort.
*
* Return value: %TRUE if the iter is valid, %FALSE if the iter is invalid.
**/
gboolean
gtk_tree_model_sort_iter_is_valid (GtkTreeModelSort *tree_model_sort,
GtkTreeIter *iter)
{
g_return_val_if_fail (GTK_IS_TREE_MODEL_SORT (tree_model_sort), FALSE);
g_return_val_if_fail (iter != NULL, FALSE);
if (!VALID_ITER (iter, tree_model_sort))
return FALSE;
return gtk_tree_model_sort_iter_is_valid_helper (iter,
tree_model_sort->root);
}