fixed updating of selection after deleting the last image from the list
authorVladimir Nadvornik <nadvornik@suse.cz>
Fri, 2 Jan 2009 23:14:01 +0000 (23:14 +0000)
committerVladimir Nadvornik <nadvornik@suse.cz>
Fri, 2 Jan 2009 23:14:01 +0000 (23:14 +0000)
src/view_file_icon.c
src/view_file_list.c

index 19f5ee5..61be364 100644 (file)
@@ -1036,6 +1036,7 @@ void vficon_selection_to_mark(ViewFile *vf, gint mark, SelectionToMarkMode mode)
 static void vficon_select_closest(ViewFile *vf, FileData *sel_fd)
 {
        GList *work;
+       IconData *id = NULL;
        
        if (sel_fd->parent) sel_fd = sel_fd->parent;
        work = vf->list;
@@ -1043,21 +1044,22 @@ static void vficon_select_closest(ViewFile *vf, FileData *sel_fd)
        while (work)
                {
                gint match;
-               IconData *id = work->data;
-               FileData *fd = id->fd;
-               work = work->next;
+               FileData *fd;
                
+               id = work->data;
+               fd = id->fd;
+               work = work->next;
 
                match = filelist_sort_compare_filedata_full(fd, sel_fd, vf->sort_method, vf->sort_ascend);
                
-               if (match >= 0)
-                       {
-                       vficon_select(vf, id);
-                       vficon_send_layout_select(vf, id);
-                       break;
-                       }
+               if (match >= 0) break;
+               }
+       
+       if (id)
+               {
+               vficon_select(vf, id);
+               vficon_send_layout_select(vf, id);
                }
-
 }
 
 
index ff2ba51..ee7903f 100644 (file)
@@ -1518,6 +1518,7 @@ void vflist_select_by_fd(ViewFile *vf, FileData *fd)
 static void vflist_select_closest(ViewFile *vf, FileData *sel_fd)
 {
        GList *work;
+       FileData *fd = NULL;
        
        if (sel_fd->parent) sel_fd = sel_fd->parent;
        work = vf->list;
@@ -1525,19 +1526,16 @@ static void vflist_select_closest(ViewFile *vf, FileData *sel_fd)
        while (work)
                {
                gint match;
-               FileData *fd = work->data;
+               fd = work->data;
                work = work->next;
-               
 
                match = filelist_sort_compare_filedata_full(fd, sel_fd, vf->sort_method, vf->sort_ascend);
                
-               if (match >= 0)
-                       {
-                       vflist_select_by_fd(vf, fd);
-                       break;
-                       }
+               if (match >= 0) break;
                }
 
+       if (fd) vflist_select_by_fd(vf, fd);
+
 }
 
 void vflist_mark_to_selection(ViewFile *vf, gint mark, MarkToSelectionMode mode)