From: Colin Clark Date: Mon, 27 Sep 2021 13:41:52 +0000 (+0100) Subject: Part fix #711: Deleting image should not scroll file list unnecessarily X-Git-Tag: v1.7~48 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=ea4b4ded984fcbaec1155ad16a81b5f8131b3e7b;hp=729b21ef8f0e73aec8e87acaa09a2c5e85273631 Part fix #711: Deleting image should not scroll file list unnecessarily https://github.com/BestImageViewer/geeqie/issues/711 This fix still has the following problems: 1. The refresh scrolls the list so that the first thumbnail is completely aligned in the view 2. Sometimes the first alignment is followed by a second 3. If a selection list is deleted, the thumb with focus is not brought into the view area 4. If an image in the last row is deleted, sometimes the remaining last row is not brought completely into the view --- diff --git a/src/view_file/view_file_icon.c b/src/view_file/view_file_icon.c index 779c0e0a..64c9baa2 100644 --- a/src/view_file/view_file_icon.c +++ b/src/view_file/view_file_icon.c @@ -1944,9 +1944,13 @@ static gboolean vficon_refresh_real(ViewFile *vf, gboolean keep_position) GList *new_filelist = NULL; GList *new_fd_list = NULL; GList *old_selected = NULL; + GtkTreePath *end_path = NULL; + GtkTreePath *start_path = NULL; focus_fd = VFICON(vf)->focus_fd; + gtk_tree_view_get_visible_range(GTK_TREE_VIEW(vf->listview), &start_path, &end_path); + if (vf->dir_fd) { ret = filelist_read(vf->dir_fd, &new_filelist, NULL); @@ -2080,12 +2084,14 @@ static gboolean vficon_refresh_real(ViewFile *vf, gboolean keep_position) } file_data_unref(first_selected); - /* attempt to keep focus on same icon when refreshing */ - if (focus_fd && g_list_find(vf->list, focus_fd)) + if (start_path) { - vficon_set_focus(vf, focus_fd); + gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(vf->listview), start_path, NULL, FALSE, 0.0, 0.0); } + gtk_tree_path_free(start_path); + gtk_tree_path_free(end_path); + return ret; }