Mercurial > geeqie
diff src/view_dir.c @ 1628:66bf394d162a
simplified the code around vd_select_row
| author | nadvornik |
|---|---|
| date | Fri, 05 Jun 2009 21:52:37 +0000 |
| parents | 5d54bc073bfa |
| children | cc3ccf3c7c27 |
line wrap: on
line diff
--- a/src/view_dir.c Thu Jun 04 21:07:03 2009 +0000 +++ b/src/view_dir.c Fri Jun 05 21:52:37 2009 +0000 @@ -143,7 +143,7 @@ } void vd_set_select_func(ViewDir *vd, - void (*func)(ViewDir *vd, const gchar *path, gpointer data), gpointer data) + void (*func)(ViewDir *vd, FileData *fd, gpointer data), gpointer data) { vd->select_func = func; vd->select_data = data; @@ -193,13 +193,15 @@ return ret; } +/* the calling stack is this: + vd_select_row -> select_func -> layout_set_fd -> vd_set_fd +*/ void vd_select_row(ViewDir *vd, FileData *fd) { - switch (vd->type) - { - case DIRVIEW_LIST: vdlist_select_row(vd, fd); break; - case DIRVIEW_TREE: vdtree_select_row(vd, fd); break; - } + if (fd && vd->select_func) + { + vd->select_func(vd, fd, vd->select_data); + } } gboolean vd_find_row(ViewDir *vd, FileData *fd, GtkTreeIter *iter) @@ -422,7 +424,9 @@ if (vd->select_func) { - vd->select_func(vd, path, vd->select_data); + FileData *fd = file_data_new_simple(path); + vd->select_func(vd, fd, vd->select_data); + file_data_unref(fd); } g_free(path); @@ -1023,7 +1027,7 @@ if (fd && vd->click_fd == fd) { - vdlist_select_row(vd, vd->click_fd); + vd_select_row(vd, vd->click_fd); } return FALSE;
