diff options
author | Carlos Soriano <csoriano@gnome.org> | 2016-03-29 21:57:59 +0200 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2016-04-05 15:13:51 +0200 |
commit | ab9e9828d496ec488f0555649fb3611b89c0a9a3 (patch) | |
tree | 1a6a35054c8cddeacb2a0fdae96d7def006f3aa1 | |
parent | 05227a80afb5b8fe5d0d4fca5c382abfafabe7f5 (diff) | |
download | nautilus-ab9e9828d496ec488f0555649fb3611b89c0a9a3.tar.gz |
desktop-directory: override creation of files
So we use inheritance instead of special casing, making possible
to remove the desktop dependency for the creation of the desktop
files.
-rw-r--r-- | libnautilus-private/nautilus-desktop-directory.c | 26 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory.c | 11 |
2 files changed, 27 insertions, 10 deletions
diff --git a/libnautilus-private/nautilus-desktop-directory.c b/libnautilus-private/nautilus-desktop-directory.c index 4064ed84a..2b610c20e 100644 --- a/libnautilus-private/nautilus-desktop-directory.c +++ b/libnautilus-private/nautilus-desktop-directory.c @@ -23,6 +23,7 @@ #include <config.h> #include "nautilus-desktop-directory.h" +#include "nautilus-desktop-directory-file.h" #include "nautilus-directory-private.h" #include "nautilus-file.h" @@ -484,6 +485,30 @@ update_desktop_directory (NautilusDesktopDirectory *desktop) desktop->details->real_directory = real_directory; } +static NautilusFile * +real_new_file_from_filename (NautilusDirectory *directory, + const char *filename, + gboolean self_owned) +{ + NautilusFile *file; + + g_assert (NAUTILUS_IS_DIRECTORY (directory)); + g_assert (filename != NULL); + g_assert (filename[0] != '\0'); + + if (self_owned) { + file = NAUTILUS_FILE (g_object_new (NAUTILUS_TYPE_DESKTOP_DIRECTORY_FILE, NULL)); + } else { + g_critical ("Accessing desktop uris directly is not supported."); + + return NULL; + } + + nautilus_file_set_directory (file, directory); + + return file; +} + static void desktop_directory_changed_callback (gpointer data) { @@ -522,6 +547,7 @@ nautilus_desktop_directory_class_init (NautilusDesktopDirectoryClass *class) directory_class->force_reload = desktop_force_reload; directory_class->are_all_files_seen = desktop_are_all_files_seen; directory_class->is_not_empty = desktop_is_not_empty; + directory_class->new_file_from_filename = real_new_file_from_filename; /* Override get_file_list so that we can return the list of files * in NautilusDesktopDirectory->details->real_directory, * in addition to the list of standard desktop icons on the desktop. diff --git a/libnautilus-private/nautilus-directory.c b/libnautilus-private/nautilus-directory.c index 06cb6a738..3d4f9858b 100644 --- a/libnautilus-private/nautilus-directory.c +++ b/libnautilus-private/nautilus-directory.c @@ -568,16 +568,7 @@ real_new_file_from_filename (NautilusDirectory *directory, g_assert (filename != NULL); g_assert (filename[0] != '\0'); - if (NAUTILUS_IS_DESKTOP_DIRECTORY (directory)) { - g_print ("DIRECTORY FILE\n"); - if (self_owned) { - file = NAUTILUS_FILE (g_object_new (NAUTILUS_TYPE_DESKTOP_DIRECTORY_FILE, NULL)); - } else { - /* This doesn't normally happen, unless the user somehow types in a uri - * that references a file like this. (See #349840) */ - file = NAUTILUS_FILE (g_object_new (NAUTILUS_TYPE_VFS_FILE, NULL)); - } - } else if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) { + if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) { if (self_owned) { file = NAUTILUS_FILE (g_object_new (NAUTILUS_TYPE_SEARCH_DIRECTORY_FILE, NULL)); } else { |