Skip to content

Commit

Permalink
do not enter a directory after rename
Browse files Browse the repository at this point in the history
  • Loading branch information
nadvornik committed Jan 2, 2009
1 parent 067cf8e commit dc4d041
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 11 deletions.
5 changes: 0 additions & 5 deletions src/view_dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,11 +231,6 @@ static gint vd_rename_cb(TreeEditData *td, const gchar *old, const gchar *new, g

file_util_rename_dir(fd, new_path, vd->view);

if (vd->layout && vd->dir_fd != fd)
{
layout_set_path(vd->layout, new_path);
}

g_free(new_path);

return FALSE;
Expand Down
28 changes: 22 additions & 6 deletions src/view_dir_tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,22 @@ static NodeData *vdtree_find_iter_by_name(ViewDir *vd, GtkTreeIter *parent, cons
return NULL;
}

static NodeData *vdtree_find_iter_by_fd(ViewDir *vd, GtkTreeIter *parent, FileData *fd, GtkTreeIter *iter)
{
GtkTreeModel *store;

store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view));
if (!fd || !gtk_tree_model_iter_children(store, iter, parent)) return NULL;
do {
NodeData *nd;

gtk_tree_model_get(store, iter, DIR_COLUMN_POINTER, &nd, -1);
if (nd && nd->fd == fd) return nd;
} while (gtk_tree_model_iter_next(store, iter));

return NULL;
}

static void vdtree_add_by_data(ViewDir *vd, FileData *fd, GtkTreeIter *parent)
{
GtkTreeStore *store;
Expand Down Expand Up @@ -512,17 +528,17 @@ gint vdtree_populate_path_by_iter(ViewDir *vd, GtkTreeIter *iter, gint force, Fi
{
NodeData *cnd;

cnd = vdtree_find_iter_by_name(vd, iter, fd->name, &child);
cnd = vdtree_find_iter_by_fd(vd, iter, fd, &child);
if (cnd)
{
old = g_list_remove(old, cnd);
if (cnd->expanded && cnd->version != fd->version &&
vdtree_populate_path_by_iter(vd, &child, FALSE, target_fd))
if (cnd->expanded && cnd->version != fd->version)
{
gtk_tree_store_set(GTK_TREE_STORE(store), &child, DIR_COLUMN_NAME, fd->name, -1);
cnd->version = fd->version;
vdtree_populate_path_by_iter(vd, &child, FALSE, target_fd);
}

gtk_tree_store_set(GTK_TREE_STORE(store), &child, DIR_COLUMN_NAME, fd->name, -1);
cnd->version = fd->version;
old = g_list_remove(old, cnd);
file_data_unref(fd);
}
else
Expand Down

0 comments on commit dc4d041

Please sign in to comment.