diff options
author | Carlos Soriano <csoriano@gnome.org> | 2016-03-29 21:47:11 +0200 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2016-04-06 10:51:40 +0200 |
commit | 8494187e98fe24f6ab9360314a34fa2d7cbe5091 (patch) | |
tree | 2f44fdda7307b3508eaab1aec602e3a93ad61389 | |
parent | be3ace78c485b659808cd5a8860708a884986e78 (diff) | |
download | nautilus-8494187e98fe24f6ab9360314a34fa2d7cbe5091.tar.gz |
directory: allow overriding the creation of files
So subclasses like the desktop directory can do their own.
-rw-r--r-- | libnautilus-private/nautilus-directory.c | 15 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory.h | 6 |
2 files changed, 21 insertions, 0 deletions
diff --git a/libnautilus-private/nautilus-directory.c b/libnautilus-private/nautilus-directory.c index 81803f5d8..a08cb4231 100644 --- a/libnautilus-private/nautilus-directory.c +++ b/libnautilus-private/nautilus-directory.c @@ -65,6 +65,9 @@ static GList * real_get_file_list (NautilusDirectory static gboolean real_is_editable (NautilusDirectory *directory); static void set_directory_location (NautilusDirectory *directory, GFile *location); +static NautilusFile * real_new_file_from_filename (NautilusDirectory *directory, + const char *filename, + gboolean self_owned); G_DEFINE_TYPE (NautilusDirectory, nautilus_directory, G_TYPE_OBJECT); @@ -111,6 +114,8 @@ nautilus_directory_class_init (NautilusDirectoryClass *klass) object_class = G_OBJECT_CLASS (klass); + klass->new_file_from_filename = real_new_file_from_filename; + object_class->finalize = nautilus_directory_finalize; object_class->set_property = nautilus_directory_set_property; object_class->get_property = nautilus_directory_get_property; @@ -547,6 +552,16 @@ nautilus_directory_new_file_from_filename (NautilusDirectory *directory, const char *filename, gboolean self_owned) { + return NAUTILUS_DIRECTORY_CLASS (G_OBJECT_GET_CLASS (directory))->new_file_from_filename (directory, + filename, + self_owned); +} + +static NautilusFile * +real_new_file_from_filename (NautilusDirectory *directory, + const char *filename, + gboolean self_owned) +{ NautilusFile *file; g_assert (NAUTILUS_IS_DIRECTORY (directory)); diff --git a/libnautilus-private/nautilus-directory.h b/libnautilus-private/nautilus-directory.h index 46a253c88..de3c0d91d 100644 --- a/libnautilus-private/nautilus-directory.h +++ b/libnautilus-private/nautilus-directory.h @@ -137,6 +137,12 @@ typedef struct * An example of this is the search directory. */ gboolean (* is_editable) (NautilusDirectory *directory); + + /* Subclasses can use this to create custom files when asked by the user + * or the nautilus cache. */ + NautilusFile * (* new_file_from_filename) (NautilusDirectory *directory, + const char *filename, + gboolean self_owned); } NautilusDirectoryClass; /* Basic GObject requirements. */ |