Mercurial > geeqie.yaz
diff src/view_dir.c @ 1626:94e4a47ccaff
simplified the code around vd_select_row
author | nadvornik |
---|---|
date | Fri, 05 Jun 2009 21:52:37 +0000 |
parents | 99c194fa2fc9 |
children | 9b692bdb4b9f |
line wrap: on
line diff
--- a/src/view_dir.c Thu Jun 04 16:07:16 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;