diff --git a/src/nautilus-directory.c b/src/nautilus-directory.c index e14f697c6..363018a7c 100644 --- a/src/nautilus-directory.c +++ b/src/nautilus-directory.c @@ -33,9 +33,6 @@ #include "nautilus-hash-queue.h" #include "nautilus-metadata.h" #include "nautilus-scheme.h" -#include "nautilus-search-directory-file.h" -#include "nautilus-search-directory.h" -#include "nautilus-starred-directory.h" #include "nautilus-vfs-directory.h" #include "nautilus-vfs-file.h" @@ -124,37 +121,9 @@ 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 (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) - { - if (self_owned) - { - file = NAUTILUS_FILE (g_object_new (NAUTILUS_TYPE_SEARCH_DIRECTORY_FILE, - "directory", directory, - 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, - "directory", directory, - NULL)); - } - } - else - { - file = NAUTILUS_FILE (g_object_new (NAUTILUS_TYPE_VFS_FILE, - "directory", directory, - NULL)); - } - - return file; + return NAUTILUS_FILE (g_object_new (NAUTILUS_TYPE_VFS_FILE, + "directory", directory, + NULL)); } static gboolean @@ -692,6 +661,10 @@ nautilus_directory_new_file_from_filename (NautilusDirectory *directory, const char *filename, gboolean self_owned) { + g_assert (NAUTILUS_IS_DIRECTORY (directory)); + g_assert (filename != NULL); + g_assert (filename[0] != '\0'); + return NAUTILUS_DIRECTORY_CLASS (G_OBJECT_GET_CLASS (directory))->new_file_from_filename (directory, filename, self_owned); diff --git a/src/nautilus-search-directory.c b/src/nautilus-search-directory.c index e63931c24..0e04a7269 100644 --- a/src/nautilus-search-directory.c +++ b/src/nautilus-search-directory.c @@ -691,6 +691,24 @@ search_engine_finished (NautilusSearchEngine *engine, } } +static NautilusFile * +search_new_file_from_filename (NautilusDirectory *directory, + const char *filename, + gboolean self_owned) +{ + if (!self_owned) + { + /* This doesn't normally happen, unless the user somehow types in a uri + * that references a file like this. + * See https://bugzilla.gnome.org/show_bug.cgi?id=349840 */ + return NAUTILUS_DIRECTORY_CLASS (nautilus_search_directory_parent_class)->new_file_from_filename (directory, filename, self_owned); + } + + return NAUTILUS_FILE (g_object_new (NAUTILUS_TYPE_SEARCH_DIRECTORY_FILE, + "directory", directory, + NULL)); +} + static void search_force_reload (NautilusDirectory *directory) { @@ -929,6 +947,8 @@ nautilus_search_directory_class_init (NautilusSearchDirectoryClass *class) oclass->get_property = search_get_property; oclass->set_property = search_set_property; + directory_class->new_file_from_filename = search_new_file_from_filename; + directory_class->are_all_files_seen = search_are_all_files_seen; directory_class->contains_file = search_contains_file; directory_class->force_reload = search_force_reload;