summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2016-03-29 21:47:11 +0200
committerCarlos Soriano <csoriano@gnome.org>2016-04-06 10:51:40 +0200
commit8494187e98fe24f6ab9360314a34fa2d7cbe5091 (patch)
tree2f44fdda7307b3508eaab1aec602e3a93ad61389
parentbe3ace78c485b659808cd5a8860708a884986e78 (diff)
downloadnautilus-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.c15
-rw-r--r--libnautilus-private/nautilus-directory.h6
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. */