summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2016-03-30 16:02:49 +0200
committerCarlos Soriano <csoriano@gnome.org>2016-04-05 15:13:51 +0200
commitdad6bc0ebe4f9d1fa3256e3227225e750d8151ea (patch)
tree576e32db1d9564534fcccd02fb8a9d1daef91268
parent0ce01b3881d9e2728a0ce7797ec939c9b80116af (diff)
downloadnautilus-dad6bc0ebe4f9d1fa3256e3227225e750d8151ea.tar.gz
file: allow overriding dnd handling
Subclasses may want to override some dnd handling.
-rw-r--r--libnautilus-private/nautilus-file.c8
-rw-r--r--libnautilus-private/nautilus-file.h2
2 files changed, 10 insertions, 0 deletions
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 806679988..55da59d95 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -165,6 +165,7 @@ static const char * nautilus_file_peek_display_name (NautilusFile *file);
static const char * nautilus_file_peek_display_name_collation_key (NautilusFile *file);
static void file_mount_unmounted (GMount *mount, gpointer data);
static void metadata_hash_free (GHashTable *hash);
+static gboolean real_drag_can_accept_files (NautilusFile *drop_target_item);
G_DEFINE_TYPE_WITH_CODE (NautilusFile, nautilus_file, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (NAUTILUS_TYPE_FILE_INFO,
@@ -8004,6 +8005,7 @@ nautilus_file_class_init (NautilusFileClass *class)
class->can_rename = real_can_rename;
class->rename = real_rename;
class->get_target_uri = real_get_target_uri;
+ class->drag_can_accept_files = real_drag_can_accept_files;
signals[CHANGED] =
g_signal_new ("changed",
@@ -8127,6 +8129,12 @@ nautilus_file_info_providers_done (NautilusFile *file)
static gboolean
nautilus_drag_can_accept_files (NautilusFile *drop_target_item)
{
+ return NAUTILUS_FILE_CLASS (G_OBJECT_GET_CLASS (drop_target_item))->drag_can_accept_files (drop_target_item);
+}
+
+static gboolean
+real_drag_can_accept_files (NautilusFile *drop_target_item)
+{
if (nautilus_file_is_directory (drop_target_item)) {
NautilusDirectory *directory;
gboolean res;
diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h
index 447eb727b..77b4fe16a 100644
--- a/libnautilus-private/nautilus-file.h
+++ b/libnautilus-private/nautilus-file.h
@@ -599,6 +599,8 @@ typedef struct {
gpointer callback_data);
char* (* get_target_uri) (NautilusFile *file);
+
+ gboolean (* drag_can_accept_files) (NautilusFile *drop_target_item);
} NautilusFileClass;
#endif /* NAUTILUS_FILE_H */