Index: nautilus-file-operations.c
===================================================================
--- nautilus-file-operations.c	(revisione 14825)
+++ nautilus-file-operations.c	(copia locale)
@@ -1231,6 +1231,45 @@ confirm_delete_from_trash (CommonJob *jo
 }
 
 static gboolean
+confirm_trash (CommonJob *job,
+	       GList *files)
+{
+	char *prompt;
+	int file_count;
+	int response;
+
+	/* Just Say Yes if the preference says not to confirm. */
+	if (!confirm_trash_auto_value) {
+		return TRUE;
+	}
+
+	file_count = g_list_length (files);
+	g_assert (file_count > 0);
+	
+	if (file_count == 1) {
+		prompt = f (_("Are you sure you want to trash \"%B\"?"),
+			    files->data);
+	} else {
+		prompt = f (ngettext("Are you sure you want to trash "
+				     "the %'d selected item?",
+				     "Are you sure you want to trash "
+				     "the %'d selected items?",
+				     file_count), 
+			    file_count);
+	}
+
+	response = run_warning (job,
+				prompt,
+				NULL,
+				NULL,
+				FALSE,
+				GTK_STOCK_CANCEL, GTK_STOCK_DELETE,
+				NULL);
+	
+	return (response == 1);
+}
+
+static gboolean
 confirm_empty_trash (CommonJob *job)
 {
 	char *prompt;
@@ -1773,6 +1812,7 @@ delete_job (GIOSchedulerJob *io_job,
 	GFile *file;
 	gboolean confirmed;
 	CommonJob *common;
+	gboolean must_confirm_trash;
 	gboolean must_confirm_delete_in_trash;
 	gboolean must_confirm_delete;
 	int files_skipped;
@@ -1785,6 +1825,7 @@ delete_job (GIOSchedulerJob *io_job,
 	to_trash_files = NULL;
 	to_delete_files = NULL;
 
+	must_confirm_trash = FALSE;
 	must_confirm_delete_in_trash = FALSE;
 	must_confirm_delete = FALSE;
 	files_skipped = 0;
@@ -1800,6 +1841,7 @@ delete_job (GIOSchedulerJob *io_job,
 			to_delete_files = g_list_prepend (to_delete_files, file);
 		} else {
 			if (job->try_trash) {
+				must_confirm_trash = TRUE;
 				to_trash_files = g_list_prepend (to_trash_files, file);
 			} else {
 				must_confirm_delete = TRUE;
@@ -1825,8 +1867,15 @@ delete_job (GIOSchedulerJob *io_job,
 	
 	if (to_trash_files != NULL) {
 		to_trash_files = g_list_reverse (to_trash_files);
-		
-		trash_files (common, to_trash_files, &files_skipped);
+		confirmed = TRUE;
+		if(must_confirm_trash) {
+			confirmed = confirm_trash (common, to_trash_files);
+		}
+		if (confirmed) {
+			trash_files (common, to_trash_files, &files_skipped);
+		} else {
+			job->user_cancel = TRUE;
+		}
 	}
 	
 	g_list_free (to_trash_files);
