nautilus r13772 - in trunk: . libnautilus-private src/file-manager
- From: cosimoc svn gnome org
- To: svn-commits-list gnome org
- Subject: nautilus r13772 - in trunk: . libnautilus-private src/file-manager
- Date: Tue, 19 Feb 2008 09:27:26 +0000 (GMT)
Author: cosimoc
Date: Tue Feb 19 09:27:26 2008
New Revision: 13772
URL: http://svn.gnome.org/viewvc/nautilus?rev=13772&view=rev
Log:
2008-02-19 Cosimo Cecchi <cosimoc gnome org>
* libnautilus-private/nautilus-file-operations.c:
(delete_job_done), (delete_job), (trash_or_delete_internal),
(callback_for_move_to_trash), (nautilus_file_operations_copy_move):
* libnautilus-private/nautilus-file-operations.h:
* src/file-manager/fm-directory-view.c:
(trash_or_delete_selected_files), (trash_or_delete_done_cb),
(trash_or_delete_files), (action_location_trash_callback):
Reset selection_was_removed in FMDirectoryView if the user
cancels the deletion from trash (#337937).
Modified:
trunk/ChangeLog
trunk/libnautilus-private/nautilus-file-operations.c
trunk/libnautilus-private/nautilus-file-operations.h
trunk/src/file-manager/fm-directory-view.c
Modified: trunk/libnautilus-private/nautilus-file-operations.c
==============================================================================
--- trunk/libnautilus-private/nautilus-file-operations.c (original)
+++ trunk/libnautilus-private/nautilus-file-operations.c Tue Feb 19 09:27:26 2008
@@ -102,6 +102,7 @@
CommonJob common;
GList *files;
gboolean try_trash;
+ gboolean user_cancel;
NautilusDeleteCallback done_callback;
gpointer done_callback_data;
} DeleteJob;
@@ -1617,7 +1618,7 @@
if (job->done_callback) {
debuting_uris = g_hash_table_new_full (g_file_hash, (GEqualFunc)g_file_equal, g_object_unref, NULL);
- job->done_callback (debuting_uris, job->done_callback_data);
+ job->done_callback (debuting_uris, job->user_cancel, job->done_callback_data);
g_hash_table_unref (debuting_uris);
}
@@ -1683,6 +1684,8 @@
}
if (confirmed) {
delete_files (common, to_delete_files);
+ } else {
+ job->user_cancel = TRUE;
}
}
@@ -1719,6 +1722,7 @@
job = op_job_new (DeleteJob, parent_window);
job->files = eel_g_object_list_copy (files);
job->try_trash = try_trash;
+ job->user_cancel = FALSE;
job->done_callback = done_callback;
job->done_callback_data = done_callback_data;
@@ -4554,6 +4558,20 @@
return g_list_reverse (files);
}
+typedef struct {
+ NautilusCopyCallback real_callback;
+ gpointer real_data;
+} MoveTrashCBData;
+
+static void
+callback_for_move_to_trash (GHashTable *debuting_uris,
+ gboolean user_cancelled,
+ MoveTrashCBData *data)
+{
+ data->real_callback (debuting_uris, data->real_data);
+ g_slice_free (MoveTrashCBData, data);
+}
+
void
nautilus_file_operations_copy_move (const GList *item_uris,
GArray *relative_item_points,
@@ -4594,9 +4612,15 @@
} else if (copy_action == GDK_ACTION_MOVE) {
if (g_file_has_uri_scheme (dest, "trash")) {
+ MoveTrashCBData *cb_data;
+
+ cb_data = g_slice_new0 (MoveTrashCBData);
+ cb_data->real_callback = done_callback;
+ cb_data->real_data = done_callback_data;
nautilus_file_operations_trash_or_delete (locations,
parent_window,
- done_callback, done_callback_data);
+ (NautilusDeleteCallback) callback_for_move_to_trash,
+ cb_data);
} else {
nautilus_file_operations_move (locations,
relative_item_points,
Modified: trunk/libnautilus-private/nautilus-file-operations.h
==============================================================================
--- trunk/libnautilus-private/nautilus-file-operations.h (original)
+++ trunk/libnautilus-private/nautilus-file-operations.h Tue Feb 19 09:27:26 2008
@@ -37,6 +37,7 @@
gpointer callback_data);
typedef void (* NautilusOpCallback) (gpointer callback_data);
typedef void (* NautilusDeleteCallback) (GHashTable *debuting_uris,
+ gboolean user_cancel,
gpointer callback_data);
/* FIXME: int copy_action should be an enum */
Modified: trunk/src/file-manager/fm-directory-view.c
==============================================================================
--- trunk/src/file-manager/fm-directory-view.c (original)
+++ trunk/src/file-manager/fm-directory-view.c Tue Feb 19 09:27:26 2008
@@ -298,7 +298,8 @@
GArray *item_locations);
static void trash_or_delete_files (GtkWindow *parent_window,
const GList *files,
- gboolean delete_if_all_already_in_trash);
+ gboolean delete_if_all_already_in_trash,
+ FMDirectoryView *view);
static void load_directory (FMDirectoryView *view,
NautilusDirectory *directory);
static void fm_directory_view_merge_menus (FMDirectoryView *view);
@@ -905,7 +906,9 @@
*/
if (!view->details->selection_was_removed) {
selection = fm_directory_view_get_selection_for_file_transfer (view);
- trash_or_delete_files (fm_directory_view_get_containing_window (view), selection, TRUE);
+ trash_or_delete_files (fm_directory_view_get_containing_window (view),
+ selection, TRUE,
+ view);
nautilus_file_list_free (selection);
view->details->selection_was_removed = TRUE;
}
@@ -3591,9 +3594,20 @@
}
static void
+trash_or_delete_done_cb (GHashTable *debuting_uris,
+ gboolean user_cancel,
+ FMDirectoryView *view)
+{
+ if (user_cancel) {
+ view->details->selection_was_removed = FALSE;
+ }
+}
+
+static void
trash_or_delete_files (GtkWindow *parent_window,
const GList *files,
- gboolean delete_if_all_already_in_trash)
+ gboolean delete_if_all_already_in_trash,
+ FMDirectoryView *view)
{
GList *locations;
const GList *node;
@@ -3608,7 +3622,8 @@
nautilus_file_operations_trash_or_delete (locations,
parent_window,
- NULL, NULL);
+ (NautilusDeleteCallback) trash_or_delete_done_cb,
+ view);
eel_g_object_list_free (locations);
}
@@ -6123,7 +6138,9 @@
g_return_if_fail (file != NULL);
files = g_list_append (NULL, file);
- trash_or_delete_files (fm_directory_view_get_containing_window (view), files, TRUE);
+ trash_or_delete_files (fm_directory_view_get_containing_window (view),
+ files, TRUE,
+ view);
g_list_free (files);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]