+/** @brief Callback for choose_get_selected() */
+static void choose_gather_selected_callback(GtkTreeModel attribute((unused)) *model,
+ GtkTreePath attribute((unused)) *path,
+ GtkTreeIter *iter,
+ gpointer data) {
+ struct cdvector *v = data;
+ struct choosedata *cd = choose_iter_to_data(iter);
+
+ if(cd)
+ cdvector_append(v, cd);
+}
+
+/** @brief Get a list of all selected tracks and directories */
+static struct choosedata **choose_get_selected(int *nselected) {
+ struct cdvector v[1];
+
+ cdvector_init(v);
+ gtk_tree_selection_selected_foreach(choose_selection,
+ choose_gather_selected_callback,
+ v);
+ cdvector_terminate(v);
+ if(nselected)
+ *nselected = v->nvec;
+ return v->vec;
+}
+