Mercurial > hg > forks > geeqie
changeset 2393:959c579fd4bb
Tree view fix
* github/merge-requests/415:
Fix hidden directories not showing in a tree view
Thanks Maciej.
author | Klaus Ethgen <Klaus@Ethgen.de> |
---|---|
date | Sat, 03 Dec 2016 15:58:56 +0100 |
parents | 739e2e0f7f7c (current diff) 335b038e401c (diff) |
children | 1c474a4e91a2 |
files | |
diffstat | 1 files changed, 22 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/src/view_dir_tree.c Sat Dec 03 15:50:38 2016 +0100 +++ b/src/view_dir_tree.c Sat Dec 03 15:58:56 2016 +0100 @@ -440,6 +440,7 @@ time_t current_time; GtkTreeIter child; NodeData *nd; + gboolean add_hidden = FALSE; store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view)); gtk_tree_model_get(store, iter, DIR_COLUMN_POINTER, &nd, -1); @@ -464,13 +465,8 @@ return TRUE; } file_data_check_changed_files(nd->fd); /* make sure we have recent info */ - if (nd->fd->version == nd->version) return TRUE; } - vdtree_busy_push(vd); - - filelist_read(nd->fd, NULL, &list); - /* when hidden files are not enabled, and the user enters a hidden path, * allow the tree to display that path by specifically inserting the hidden entries */ @@ -482,21 +478,32 @@ n = strlen(nd->fd->path); if (target_fd->path[n] == G_DIR_SEPARATOR && target_fd->path[n+1] == '.') - { - gchar *name8; + add_hidden = TRUE; + } - n++; + if (nd->expanded && (!force && !add_hidden) && nd->fd->version == nd->version) + return TRUE; - while (target_fd->path[n] != '\0' && target_fd->path[n] != G_DIR_SEPARATOR) n++; - name8 = g_strndup(target_fd->path, n); + vdtree_busy_push(vd); + + filelist_read(nd->fd, NULL, &list); - if (isdir(name8)) - { - list = g_list_prepend(list, file_data_new_dir(name8)); - } + if (add_hidden) + { + gint n; + gchar *name8; + + n = strlen(nd->fd->path) + 1; - g_free(name8); + while (target_fd->path[n] != '\0' && target_fd->path[n] != G_DIR_SEPARATOR) n++; + name8 = g_strndup(target_fd->path, n); + + if (isdir(name8)) + { + list = g_list_prepend(list, file_data_new_dir(name8)); } + + g_free(name8); } old = NULL;