mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-09-29 20:44:17 +00:00
search-directory: Create own file
There is no reason for nautilus-directory.c to include the header for a subclass just to implement a virtual method the subclass could have implemented itself. So, have NautilusSearchDirectory create NautilusSearchDirectoryFile and stop including unneeded headers in directory.c. Also do precondition checking in the method, not the implementation. This sets a pattern for upcoming new NautilusFile subclasses.
This commit is contained in:
parent
3c23786c8c
commit
c7d515942b
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue