diff options
author | John Sullivan <sullivan@src.gnome.org> | 2000-02-01 21:09:10 +0000 |
---|---|---|
committer | John Sullivan <sullivan@src.gnome.org> | 2000-02-01 21:09:10 +0000 |
commit | d0c581b5c36347b0d5627a20eb851c47926432b4 (patch) | |
tree | df423c7642dd7b19836a4f0e92303f151989e248 /libnautilus | |
parent | 7c97b308cf69ff467b5bd675698bfc19f59c4e83 (diff) | |
download | nautilus-d0c581b5c36347b0d5627a20eb851c47926432b4.tar.gz |
Fixed bug where extra item appeared at each reload or view switch.
Diffstat (limited to 'libnautilus')
-rw-r--r-- | libnautilus/nautilus-directory.c | 49 |
1 files changed, 26 insertions, 23 deletions
diff --git a/libnautilus/nautilus-directory.c b/libnautilus/nautilus-directory.c index 60459b72c..5c92f1235 100644 --- a/libnautilus/nautilus-directory.c +++ b/libnautilus/nautilus-directory.c @@ -218,7 +218,7 @@ nautilus_directory_get (const char *uri) */ /* Create the hash table first time through. */ - if (!directory_objects) + if (directory_objects == NULL) directory_objects = g_hash_table_new (g_str_hash, g_str_equal); /* If the object is already in the hash table, look it up. */ @@ -589,6 +589,8 @@ nautilus_directory_start_monitoring (NautilusDirectory *directory, NautilusFileListCallback callback, gpointer callback_data) { + GnomeVFSResult result; + g_return_if_fail (NAUTILUS_IS_DIRECTORY (directory)); g_return_if_fail (callback != NULL); @@ -597,28 +599,29 @@ nautilus_directory_start_monitoring (NautilusDirectory *directory, directory->details->files, callback_data); - if (directory->details->directory_load_in_progress == NULL) { - GnomeVFSResult result; - - directory->details->directory_load_list_last_handled - = GNOME_VFS_DIRECTORY_LIST_POSITION_NONE; - result = gnome_vfs_async_load_directory_uri - (&directory->details->directory_load_in_progress, /* handle */ - directory->details->uri, /* uri */ - (GNOME_VFS_FILE_INFO_GETMIMETYPE /* options */ - | GNOME_VFS_FILE_INFO_FASTMIMETYPE - | GNOME_VFS_FILE_INFO_FOLLOWLINKS), - NULL, /* meta_keys */ - NULL, /* sort_rules */ - FALSE, /* reverse_order */ - GNOME_VFS_DIRECTORY_FILTER_NONE, /* filter_type */ - (GNOME_VFS_DIRECTORY_FILTER_NOSELFDIR /* filter_options */ - | GNOME_VFS_DIRECTORY_FILTER_NOPARENTDIR), - NULL, /* filter_pattern */ - DIRECTORY_LOAD_ITEMS_PER_CB, /* items_per_notification */ - nautilus_directory_load_cb, /* callback */ - directory); - } + if (directory->details->directory_loaded) + return; + if (directory->details->directory_load_in_progress != NULL) + return; + + directory->details->directory_load_list_last_handled + = GNOME_VFS_DIRECTORY_LIST_POSITION_NONE; + result = gnome_vfs_async_load_directory_uri + (&directory->details->directory_load_in_progress, /* handle */ + directory->details->uri, /* uri */ + (GNOME_VFS_FILE_INFO_GETMIMETYPE /* options */ + | GNOME_VFS_FILE_INFO_FASTMIMETYPE + | GNOME_VFS_FILE_INFO_FOLLOWLINKS), + NULL, /* meta_keys */ + NULL, /* sort_rules */ + FALSE, /* reverse_order */ + GNOME_VFS_DIRECTORY_FILTER_NONE, /* filter_type */ + (GNOME_VFS_DIRECTORY_FILTER_NOSELFDIR /* filter_options */ + | GNOME_VFS_DIRECTORY_FILTER_NOPARENTDIR), + NULL, /* filter_pattern */ + DIRECTORY_LOAD_ITEMS_PER_CB, /* items_per_notification */ + nautilus_directory_load_cb, /* callback */ + directory); } static gboolean |