summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libnautilus-private/nautilus-directory.c25
-rw-r--r--libnautilus-private/nautilus-directory.h2
-rw-r--r--src/nautilus-desktop-application.c8
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");
}