diff options
author | Pavel Cisler <pavel@eazel.com> | 2000-09-06 02:35:58 +0000 |
---|---|---|
committer | Pavel Cisler <pce@src.gnome.org> | 2000-09-06 02:35:58 +0000 |
commit | 49708b8ade5fa91a379913e17a34e6e16999d6a0 (patch) | |
tree | 0e56cd910abf5575ac6ddbc61ce738e05e66f1f3 /libnautilus-private/nautilus-file-changes-queue.c | |
parent | 2293d4ca661721e5f6727111aac937b32a66ba33 (diff) | |
download | nautilus-49708b8ade5fa91a379913e17a34e6e16999d6a0.tar.gz |
Add hooks for metadata removal.
2000-09-05 Pavel Cisler <pavel@eazel.com>
* libnautilus-extensions/nautilus-directory-notify.h:
* libnautilus-extensions/nautilus-directory.c:
(nautilus_direcotry_copy_move_metadata_key),
(nautilus_directory_move_metadata),
(nautilus_directory_copy_metadata),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move),
(nautilus_directory_schedule_metadata_remove):
* libnautilus-extensions/nautilus-file-changes-queue.c:
(nautilus_file_changes_queue_schedule_metadata_remove),
(nautilus_file_changes_consume_changes):
* libnautilus-extensions/nautilus-file-changes-queue.h:
* libnautilus-extensions/nautilus-file-operations.c:
(sync_xfer_callback):
Add hooks for metadata removal.
Diffstat (limited to 'libnautilus-private/nautilus-file-changes-queue.c')
-rw-r--r-- | libnautilus-private/nautilus-file-changes-queue.c | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/libnautilus-private/nautilus-file-changes-queue.c b/libnautilus-private/nautilus-file-changes-queue.c index 3a3686ec9..5bc14f284 100644 --- a/libnautilus-private/nautilus-file-changes-queue.c +++ b/libnautilus-private/nautilus-file-changes-queue.c @@ -42,7 +42,8 @@ typedef enum { CHANGE_FILE_REMOVED, CHANGE_FILE_MOVED, CHANGE_METADATA_COPY, - CHANGE_METADATA_MOVE + CHANGE_METADATA_MOVE, + CHANGE_METADATA_REMOVE } NautilusFileChangeKind; typedef struct { @@ -93,7 +94,6 @@ nautilus_file_change_free (NautilusFileChange *change) g_free (change->to_uri); } - void nautilus_file_changes_queue_free (NautilusFileChangesQueue *queue) { @@ -210,6 +210,20 @@ nautilus_file_changes_queue_schedule_metadata_move (const char *from_uri, nautilus_file_changes_queue_add_common (queue, new_item); } +void +nautilus_file_changes_queue_schedule_metadata_remove (const char *uri) +{ + NautilusFileChange *new_item; + NautilusFileChangesQueue *queue; + + queue = nautilus_file_changes_queue_get (); + + new_item = g_new (NautilusFileChange, 1); + new_item->kind = CHANGE_METADATA_REMOVE; + new_item->from_uri = g_strdup (uri); + nautilus_file_changes_queue_add_common (queue, new_item); +} + static NautilusFileChange * nautilus_file_changes_queue_get_change (NautilusFileChangesQueue *queue) { @@ -266,10 +280,8 @@ void nautilus_file_changes_consume_changes (gboolean consume_all) { NautilusFileChange *change; - GList *additions; - GList *deletions; - GList *moves; - GList *metadata_copy_requests, *metadata_move_requests; + GList *additions, *deletions, *moves; + GList *metadata_copy_requests, *metadata_move_requests, *metadata_remove_requests; URIPair *pair; int kind; int chunk_count; @@ -281,6 +293,7 @@ nautilus_file_changes_consume_changes (gboolean consume_all) moves = NULL; metadata_copy_requests = NULL; metadata_move_requests = NULL; + metadata_remove_requests = NULL; kind = CHANGE_FILE_INITIAL; queue = nautilus_file_changes_queue_get(); @@ -307,7 +320,8 @@ nautilus_file_changes_consume_changes (gboolean consume_all) g_assert ((deletions != NULL) + (moves != NULL) + (additions != NULL) + (metadata_copy_requests != NULL) - + (metadata_move_requests != NULL) <= 1); + + (metadata_move_requests != NULL) + + (metadata_remove_requests != NULL) <= 1); if (deletions != NULL) { nautilus_directory_notify_files_removed (deletions); @@ -334,6 +348,11 @@ nautilus_file_changes_consume_changes (gboolean consume_all) pairs_list_free (metadata_move_requests); metadata_move_requests = NULL; } + if (metadata_remove_requests != NULL) { + nautilus_directory_schedule_metadata_remove (metadata_remove_requests); + pairs_list_free (metadata_remove_requests); + metadata_remove_requests = NULL; + } } if (change == NULL) { @@ -374,6 +393,11 @@ nautilus_file_changes_consume_changes (gboolean consume_all) metadata_move_requests = g_list_append (metadata_move_requests, pair); break; + case CHANGE_METADATA_REMOVE: + metadata_remove_requests = g_list_append (metadata_remove_requests, + change->from_uri); + break; + default: g_assert_not_reached (); break; |