Mercurial > geeqie.yaz
comparison 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 |
comparison
equal
deleted
inserted
replaced
1625:922d7508febd | 1626:94e4a47ccaff |
---|---|
141 | 141 |
142 return vd; | 142 return vd; |
143 } | 143 } |
144 | 144 |
145 void vd_set_select_func(ViewDir *vd, | 145 void vd_set_select_func(ViewDir *vd, |
146 void (*func)(ViewDir *vd, const gchar *path, gpointer data), gpointer data) | 146 void (*func)(ViewDir *vd, FileData *fd, gpointer data), gpointer data) |
147 { | 147 { |
148 vd->select_func = func; | 148 vd->select_func = func; |
149 vd->select_data = data; | 149 vd->select_data = data; |
150 } | 150 } |
151 | 151 |
191 } | 191 } |
192 | 192 |
193 return ret; | 193 return ret; |
194 } | 194 } |
195 | 195 |
196 /* the calling stack is this: | |
197 vd_select_row -> select_func -> layout_set_fd -> vd_set_fd | |
198 */ | |
196 void vd_select_row(ViewDir *vd, FileData *fd) | 199 void vd_select_row(ViewDir *vd, FileData *fd) |
197 { | 200 { |
198 switch (vd->type) | 201 if (fd && vd->select_func) |
199 { | 202 { |
200 case DIRVIEW_LIST: vdlist_select_row(vd, fd); break; | 203 vd->select_func(vd, fd, vd->select_data); |
201 case DIRVIEW_TREE: vdtree_select_row(vd, fd); break; | 204 } |
202 } | |
203 } | 205 } |
204 | 206 |
205 gboolean vd_find_row(ViewDir *vd, FileData *fd, GtkTreeIter *iter) | 207 gboolean vd_find_row(ViewDir *vd, FileData *fd, GtkTreeIter *iter) |
206 { | 208 { |
207 gboolean ret = FALSE; | 209 gboolean ret = FALSE; |
420 if (!vd->dir_fd || strcmp(vd->dir_fd->path, G_DIR_SEPARATOR_S) == 0) return; | 422 if (!vd->dir_fd || strcmp(vd->dir_fd->path, G_DIR_SEPARATOR_S) == 0) return; |
421 path = remove_level_from_path(vd->dir_fd->path); | 423 path = remove_level_from_path(vd->dir_fd->path); |
422 | 424 |
423 if (vd->select_func) | 425 if (vd->select_func) |
424 { | 426 { |
425 vd->select_func(vd, path, vd->select_data); | 427 FileData *fd = file_data_new_simple(path); |
428 vd->select_func(vd, fd, vd->select_data); | |
429 file_data_unref(fd); | |
426 } | 430 } |
427 | 431 |
428 g_free(path); | 432 g_free(path); |
429 } | 433 } |
430 | 434 |
1021 gtk_tree_path_free(tpath); | 1025 gtk_tree_path_free(tpath); |
1022 } | 1026 } |
1023 | 1027 |
1024 if (fd && vd->click_fd == fd) | 1028 if (fd && vd->click_fd == fd) |
1025 { | 1029 { |
1026 vdlist_select_row(vd, vd->click_fd); | 1030 vd_select_row(vd, vd->click_fd); |
1027 } | 1031 } |
1028 | 1032 |
1029 return FALSE; | 1033 return FALSE; |
1030 } | 1034 } |
1031 | 1035 |