X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=blobdiff_plain;f=src%2Fview-file%2Fview-file.cc;fp=src%2Fview-file%2Fview-file.cc;h=929f4eb9ef459af168a6ba9dbc9cb19232ef6ee4;hp=bca025ccbf100d7031a2c557b8c0d6d529a9d044;hb=e57cfab83e6ca160d4a1240cc74f6da99bc507b0;hpb=9cad6d70203c3beae92b28db2274f05915b58bb1 diff --git a/src/view-file/view-file.cc b/src/view-file/view-file.cc index bca025cc..929f4eb9 100644 --- a/src/view-file/view-file.cc +++ b/src/view-file/view-file.cc @@ -230,6 +230,43 @@ GList *vf_selection_get_list_by_index(ViewFile *vf) return ret; } +void vf_selection_foreach(ViewFile *vf, const ViewFileSelectionCallback &func) +{ + GtkTreeModel *store; + GList *work; + FileData *fd_n; + GtkTreeIter iter; + + if (!vf) return; + + if (vf->type == FILEVIEW_ICON) + { + if (!VFICON(vf)->selection) return; + work = VFICON(vf)->selection; + } + else + { + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview)); + work = gtk_tree_selection_get_selected_rows(selection, &store); + } + + for (; work; work = work->next) + { + if (vf->type == FILEVIEW_ICON) + { + fd_n = static_cast(work->data); + } + else + { + auto *tpath = static_cast(work->data); + gtk_tree_model_get_iter(store, &iter, tpath); + gtk_tree_model_get(store, &iter, VIEW_FILE_COLUMN_POINTER, &fd_n, -1); + } + + func(fd_n); + } +} + void vf_select_all(ViewFile *vf) { switch (vf->type)