GtkTreePath *path);
static void validate_visible_area (GtkTreeView *tree_view);
static gboolean validate_rows_handler (GtkTreeView *tree_view);
-static gboolean do_validate_rows (GtkTreeView *tree_view);
+static gboolean validate_rows (GtkTreeView *tree_view);
static gboolean presize_handler_callback (gpointer data);
static void install_presize_handler (GtkTreeView *tree_view);
static void install_scroll_sync_handler (GtkTreeView *tree_view);
/* we validate 50 rows initially just to make sure we have some size */
/* in practice, with a lot of static lists, this should get a good width */
- do_validate_rows (tree_view);
+ validate_rows (tree_view);
gtk_tree_view_size_request_columns (tree_view);
gtk_tree_view_update_size (GTK_TREE_VIEW (widget));
g_assert (tree_view);
if (tree_view->priv->tree == NULL)
- {
- tree_view->priv->validate_rows_timer = 0;
return FALSE;
- }
+
do
{
if (! GTK_RBNODE_FLAG_SET (tree_view->priv->tree->root, GTK_RBNODE_DESCENDANTS_INVALID))
gtk_tree_view_dy_to_top_row (tree_view);
if (path) gtk_tree_path_free (path);
- if (! retval)
- tree_view->priv->validate_rows_timer = 0;
return retval;
}
+static gboolean
+validate_rows (GtkTreeView *tree_view)
+{
+ gboolean retval;
+
+ retval = do_validate_rows (tree_view);
+
+ if (! retval && tree_view->priv->validate_rows_timer)
+ {
+ g_source_remove (tree_view->priv->validate_rows_timer);
+ tree_view->priv->validate_rows_timer = 0;
+ }
+
+ return retval;
+ }
+
static gboolean
validate_rows_handler (GtkTreeView *tree_view)
{
GDK_THREADS_ENTER ();
retval = do_validate_rows (tree_view);
-
+ if (! retval)
+ tree_view->priv->validate_rows_timer = 0;
+
GDK_THREADS_LEAVE ();
return retval;
}
/*
- * This function works synchronously (due to the while (do_validate_rows...)
+ * This function works synchronously (due to the while (validate_rows...)
* loop).
*
* There was a check for column_type != GTK_TREE_VIEW_COLUMN_AUTOSIZE
_gtk_tree_view_column_cell_set_dirty (column, FALSE);
do_presize_handler (tree_view);
- while (do_validate_rows (tree_view));
+ while (validate_rows (tree_view));
gtk_widget_queue_resize (GTK_WIDGET (tree_view));
}