diff options
-rw-r--r-- | libnautilus-private/nautilus-directory.c | 25 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory.h | 2 | ||||
-rw-r--r-- | src/nautilus-desktop-application.c | 8 |
3 files changed, 30 insertions, 5 deletions
diff --git a/libnautilus-private/nautilus-directory.c b/libnautilus-private/nautilus-directory.c index 3d4f9858b..f28d713b0 100644 --- a/libnautilus-private/nautilus-directory.c +++ b/libnautilus-private/nautilus-directory.c @@ -33,8 +33,6 @@ #include "nautilus-lib-self-check-functions.h" #include "nautilus-metadata.h" #include "nautilus-profile.h" -#include "nautilus-desktop-directory.h" -#include "nautilus-desktop-directory-file.h" #include "nautilus-vfs-directory.h" #include <eel/eel-glib-extensions.h> #include <eel/eel-string.h> @@ -455,6 +453,25 @@ nautilus_directory_get_for_file (NautilusFile *file) return directory; } +void +nautilus_directory_add_to_cache (NautilusDirectory *directory) +{ + NautilusDirectory *existing_directory; + GFile *location; + + location = nautilus_directory_get_location (directory); + existing_directory = nautilus_directory_get_existing (location); + if (existing_directory == NULL) { + /* Put it in the hash table. */ + g_hash_table_insert (directories, + directory->details->location, + directory); + } else { + nautilus_directory_unref (existing_directory); + } +} + + /* Returns a reffed NautilusFile object for this directory. */ NautilusFile * @@ -593,9 +610,7 @@ nautilus_directory_new (GFile *location) uri = g_file_get_uri (location); - if (eel_uri_is_desktop (uri)) { - type = NAUTILUS_TYPE_DESKTOP_DIRECTORY; - } else if (eel_uri_is_search (uri)) { + if (eel_uri_is_search (uri)) { type = NAUTILUS_TYPE_SEARCH_DIRECTORY; } else { type = NAUTILUS_TYPE_VFS_DIRECTORY; diff --git a/libnautilus-private/nautilus-directory.h b/libnautilus-private/nautilus-directory.h index de3c0d91d..3fa92f25e 100644 --- a/libnautilus-private/nautilus-directory.h +++ b/libnautilus-private/nautilus-directory.h @@ -238,6 +238,8 @@ gboolean nautilus_directory_is_editable (NautilusDirector void nautilus_directory_dump (NautilusDirectory *directory); +void nautilus_directory_add_to_cache (NautilusDirectory *directory); + NautilusFile * nautilus_directory_new_file_from_filename (NautilusDirectory *directory, const char *filename, gboolean self_owned); diff --git a/src/nautilus-desktop-application.c b/src/nautilus-desktop-application.c index 3f522ab52..f2e1b966e 100644 --- a/src/nautilus-desktop-application.c +++ b/src/nautilus-desktop-application.c @@ -20,6 +20,7 @@ #include "nautilus-desktop-application.h" #include "nautilus-desktop-window.h" +#include "nautilus-desktop-directory.h" #include "nautilus-freedesktop-generated.h" @@ -28,6 +29,7 @@ #include <gdk/gdkx.h> static NautilusFreedesktopFileManager1 *freedesktop_proxy = NULL; +static NautilusDirectory *desktop_directory = NULL; struct _NautilusDesktopApplication { @@ -235,6 +237,12 @@ nautilus_desktop_application_class_init (NautilusDesktopApplicationClass *klass) static void nautilus_desktop_application_init (NautilusDesktopApplication *self) { + g_autoptr (GFile) desktop_location; + + desktop_location = g_file_new_for_uri (EEL_DESKTOP_URI); + desktop_directory = g_object_new (NAUTILUS_TYPE_DESKTOP_DIRECTORY, "location", desktop_location, NULL); + nautilus_directory_add_to_cache (NAUTILUS_DIRECTORY (desktop_directory)); + g_object_unref (desktop_location); g_print ("desktop application init\n"); } |