Don't immediately recreate NautilusFile for the bookmark when the file is

2008-10-17  Alexander Larsson  <alexl@redhat.com>

        * libnautilus-private/nautilus-bookmark.c:
        (bookmark_file_changed_callback):
	Don't immediately recreate NautilusFile for the
	bookmark when the file is deleted, as this can
	cause loops if the file is monitored.
	See https://bugzilla.redhat.com/show_bug.cgi?id=465479



svn path=/trunk/; revision=14734
This commit is contained in:
Alexander Larsson 2008-10-17 17:18:13 +00:00 committed by Alexander Larsson
parent d4ec79bdf2
commit 082fc74796
2 changed files with 18 additions and 3 deletions

View file

@ -1,3 +1,12 @@
2008-10-17 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(bookmark_file_changed_callback):
Don't immediately recreate NautilusFile for the
bookmark when the file is deleted, as this can
cause loops if the file is monitored.
See https://bugzilla.redhat.com/show_bug.cgi?id=465479
2008-10-17 Alexander Larsson <alexl@redhat.com>
* src/nautilus-window-manage-views.c

View file

@ -388,13 +388,19 @@ bookmark_file_changed_callback (NautilusFile *file, NautilusBookmark *bookmark)
if (nautilus_file_is_gone (file) ||
nautilus_file_is_in_trash (file)) {
/* The file we were monitoring has been trashed, deleted,
* or moved in a way that we didn't notice. Make
* or moved in a way that we didn't notice. We should make
* a spanking new NautilusFile object for this
* location so if a new file appears in this place
* we will notice.
* we will notice. However, we can't immediately do so
* because creating a new NautilusFile directly as a result
* of noticing a file goes away may trigger i/o on that file
* again, noticeing it is gone, leading to a loop.
* So, the new NautilusFile is created when the bookmark
* is used again. However, this is not really a problem, as
* we don't want to change the icon or anything about the
* bookmark just because its not there anymore.
*/
nautilus_bookmark_disconnect_file (bookmark);
should_emit_appearance_changed_signal = TRUE;
} else if (nautilus_bookmark_update_icon (bookmark)) {
/* File hasn't gone away, but it has changed
* in a way that affected its icon.