static void collect_all_iters(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { struct selection_ctx *ctx = data; g_assert(ctx != NULL); g_assert(ctx->iters != NULL); *ctx->iters = g_slist_prepend(*ctx->iters, w_tree_iter_copy(iter)); if ( gtk_tree_model_iter_has_child(model, iter) && !gtk_tree_view_row_expanded(ctx->tv, path) ) { GtkTreeIter child; gint i = 0; while (gtk_tree_model_iter_nth_child(model, &child, iter, i)) { *ctx->iters = g_slist_prepend(*ctx->iters, w_tree_iter_copy(&child)); i++; } } }
static void download_selected_file(GtkTreeModel *model, GtkTreeIter *iter, GSList **sl) { struct result_data *rd; g_assert(model != NULL); g_assert(iter != NULL); if (sl) { *sl = g_slist_prepend(*sl, w_tree_iter_copy(iter)); } rd = get_result_data(model, iter); search_gui_download(rd->record, rd->sh); if (SR_DOWNLOADED & rd->record->flags) { rd->color = GUI_COLOR_DOWNLOADING; search_gui_data_changed(model, rd); } }
static inline void tree_selection_collect_data_record(GtkTreeModel *model, GtkTreeIter *iter, collect_data_struct_t *cdata, gboolean unselect) { gpointer data; g_assert(NULL != cdata); g_assert(NULL != iter); data = cdata->gdf(model, iter); if (unselect) { cdata->to_unselect = g_slist_prepend(cdata->to_unselect, w_tree_iter_copy(iter)); } if (NULL != cdata->cfn && NULL != g_slist_find_custom(cdata->results, data, cdata->cfn)) { if (GUI_PROPERTY(gui_debug) >= 3) g_warning("%s has duplicate data: %p", cdata->name, data); return; } cdata->results = g_slist_prepend(cdata->results, data); }