Mercurial > geeqie
changeset 1629:0a72cb859b49
reduced jumping of directory tree when user clicks on folders
author | nadvornik |
---|---|
date | Sat, 06 Jun 2009 11:15:09 +0000 |
parents | 66bf394d162a |
children | a5c1930c4437 |
files | src/view_dir_tree.c |
diffstat | 1 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/view_dir_tree.c Fri Jun 05 21:52:37 2009 +0000 +++ b/src/view_dir_tree.c Sat Jun 06 11:15:09 2009 +0000 @@ -694,13 +694,10 @@ if (vd_find_row(vd, fd, &iter)) { GtkTreeModel *store; - GtkTreePath *tpath; + GtkTreePath *tpath, *old_tpath; GtkTreeSelection *selection; store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view)); - tpath = gtk_tree_model_get_path(store, &iter); - gtk_tree_view_set_cursor(GTK_TREE_VIEW(vd->view), tpath, NULL, FALSE); - gtk_tree_path_free(tpath); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vd->view)); @@ -709,7 +706,16 @@ gtk_tree_selection_select_iter(selection, &iter); selection_is_ok = FALSE; - tree_view_row_make_visible(GTK_TREE_VIEW(vd->view), &iter, TRUE); + gtk_tree_view_get_cursor(GTK_TREE_VIEW(vd->view), &old_tpath, NULL); + tpath = gtk_tree_model_get_path(store, &iter); + + if (!old_tpath || gtk_tree_path_compare(tpath, old_tpath) != 0) + { + /* setting the cursor scrolls the view; do not do that unless it is necessary */ + gtk_tree_view_set_cursor(GTK_TREE_VIEW(vd->view), tpath, NULL, FALSE); + } + gtk_tree_path_free(tpath); + gtk_tree_path_free(old_tpath); } return TRUE;