diff --git a/libnautilus-private/nautilus-mime-actions.c b/libnautilus-private/nautilus-mime-actions.c
index 45701c3..47da651 100644
--- a/libnautilus-private/nautilus-mime-actions.c
+++ b/libnautilus-private/nautilus-mime-actions.c
@@ -84,6 +84,16 @@ typedef struct {
 	gboolean user_confirmation;
 } ActivateParameters;
 
+typedef struct {
+	GtkWindow *parent_window;
+	NautilusWindowSlotInfo *slot_info;
+	GList *files;
+	char *launch_directory;
+	NautilusWindowOpenMode mode;
+	NautilusWindowOpenFlags flags;
+	gboolean user_confirmation;
+} ActivateFilesParameters;
+
 /* Number of seconds until cancel dialog shows up */
 #define DELAY_UNTIL_CANCEL_MSECS 5000
 
@@ -2218,6 +2228,43 @@ activation_start_mountables (ActivateParameters *parameters)
 		activation_get_activation_uris (parameters);
 }
 
+void
+real_nautilus_mime_activate_files (GtkWindow *parent_window,
+			           NautilusWindowSlotInfo *slot_info,
+			           GList *files,
+			           const char *launch_directory,
+			           NautilusWindowOpenMode mode,
+			           NautilusWindowOpenFlags flags,
+			           gboolean user_confirmation);
+
+static void
+activate_cb (GtkDialog *message_dialog, int response, gpointer callback_data)
+{
+	ActivateFilesParameters *af;
+
+	af = callback_data;
+
+	if (response != GTK_RESPONSE_ACCEPT){
+		gtk_widget_destroy (GTK_WIDGET (message_dialog));
+		return;
+	}
+
+	real_nautilus_mime_activate_files (af->parent_window,
+			                   af->slot_info,
+			                   af->files,
+			                   af->launch_directory,
+			                   af->mode,
+			                   af->flags,
+			                   af->user_confirmation);
+
+	nautilus_file_list_free (af->files);
+	g_object_unref (af->parent_window);
+	g_object_unref (af->slot_info);
+	g_free (af->launch_directory);
+
+	gtk_widget_destroy (GTK_WIDGET (message_dialog));
+}
+
 /**
  * nautilus_mime_activate_files:
  * 
@@ -2236,6 +2283,78 @@ nautilus_mime_activate_files (GtkWindow *parent_window,
 			      NautilusWindowOpenFlags flags,
 			      gboolean user_confirmation)
 {
+	GtkWidget *dialog;
+	ActivateFilesParameters *af;
+	GList *fs;
+	char *ld;
+	char *message;
+	gint num_files;
+
+	if (files == NULL) {
+		return;
+	}
+
+	num_files = g_list_length (files);
+
+	if (num_files > 25) {
+		/* reference objects */
+		fs = g_list_copy (files);
+		ld = g_strdup (launch_directory);
+		nautilus_file_list_ref (fs);
+		g_object_ref (parent_window);
+		g_object_ref (slot_info);	
+
+		/* create and populate struct */
+		af = g_new0 (ActivateFilesParameters, 1);
+
+		af->parent_window = parent_window;
+		af->slot_info = slot_info;
+		af->files = fs;
+		af->launch_directory = ld;
+		af->mode = mode;
+		af->flags = flags;
+		af->user_confirmation = user_confirmation;
+
+		message = g_strdup_printf (_("You have choosen to open %i files, are you sure you want to proceed?"), num_files);
+		dialog = eel_alert_dialog_new (parent_window,
+			              GTK_DIALOG_DESTROY_WITH_PARENT,
+				      GTK_MESSAGE_WARNING,
+			              0,
+				      _("Open multiple files"),
+				      message);
+
+		gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Proceed"), GTK_RESPONSE_ACCEPT);
+
+		gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+
+		gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL);
+
+		g_signal_connect (dialog, "response",
+				  G_CALLBACK (activate_cb), af);
+
+		gtk_widget_show (GTK_WIDGET (dialog));
+
+		g_free (message);
+	} else {
+		real_nautilus_mime_activate_files (parent_window,
+					           slot_info,
+					           files,
+					           launch_directory,
+					           mode,
+					           flags,
+					           user_confirmation);
+	}
+}
+
+void
+real_nautilus_mime_activate_files (GtkWindow *parent_window,
+			           NautilusWindowSlotInfo *slot_info,
+			           GList *files,
+			           const char *launch_directory,
+			           NautilusWindowOpenMode mode,
+			           NautilusWindowOpenFlags flags,
+			           gboolean user_confirmation)
+{
 	ActivateParameters *parameters;
 	char *file_name;
 	int file_count;
