[nautilus] Ask for confirmation before opening more than 5 files (#596577)
- From: Marcus Carlson <mdc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] Ask for confirmation before opening more than 5 files (#596577)
- Date: Sun, 11 Jul 2010 19:56:08 +0000 (UTC)
commit 525b54d9a2385efdae21fd0b0da3631ba0071ce1
Author: Marcus Carlson <mdc src gnome org>
Date: Sun Jul 11 21:51:58 2010 +0200
Ask for confirmation before opening more than 5 files (#596577)
libnautilus-private/nautilus-mime-actions.c | 58 ++++++++++++++++++++++-----
1 files changed, 48 insertions(+), 10 deletions(-)
---
diff --git a/libnautilus-private/nautilus-mime-actions.c b/libnautilus-private/nautilus-mime-actions.c
index 969bbd7..1884f9b 100644
--- a/libnautilus-private/nautilus-mime-actions.c
+++ b/libnautilus-private/nautilus-mime-actions.c
@@ -93,6 +93,7 @@ typedef struct {
#define RESPONSE_MARK_TRUSTED 1003
#define SILENT_WINDOW_OPEN_LIMIT 5
+#define SILENT_OPEN_LIMIT 5
/* This number controls a maximum character count for a URL that is
* displayed as part of a dialog. It's fairly arbitrary -- big enough
@@ -1661,6 +1662,10 @@ activate_files (ActivateParameters *parameters)
ActivationAction action;
GdkScreen *screen;
LaunchLocation *location;
+ gint num_apps;
+ gint num_unhandled;
+ gint num_files;
+ gboolean open_files;
screen = gtk_widget_get_screen (GTK_WIDGET (parameters->parent_window));
@@ -1827,20 +1832,53 @@ activate_files (ActivateParameters *parameters)
(open_in_app_uris, &unhandled_open_in_app_uris);
}
- for (l = open_in_app_parameters; l != NULL; l = l->next) {
- one_parameters = l->data;
+ num_apps = g_list_length (open_in_app_parameters);
+ num_unhandled = g_list_length (unhandled_open_in_app_uris);
+ num_files = g_list_length (open_in_app_uris);
+ open_files = TRUE;
- nautilus_launch_application_by_uri (one_parameters->application,
- one_parameters->uris,
- parameters->parent_window);
- application_launch_parameters_free (one_parameters);
+ if (!parameters->user_confirmation || num_files + num_unhandled > SILENT_OPEN_LIMIT) {
+ GtkDialog *dialog;
+ char *prompt;
+ char *detail;
+ int response;
+
+ pause_activation_timed_cancel (parameters);
+
+ prompt = _("Are you sure you want to open all files?");
+ detail = g_strdup_printf (ngettext ("This will open %d separate application.",
+ "This will open %d separate applications.", num_apps), num_apps);
+ dialog = eel_show_yes_no_dialog (prompt, detail,
+ GTK_STOCK_OK, GTK_STOCK_CANCEL,
+ parameters->parent_window);
+ g_free (detail);
+
+ response = gtk_dialog_run (dialog);
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+
+ unpause_activation_timed_cancel (parameters);
+
+ if (response != GTK_RESPONSE_YES) {
+ open_files = FALSE;
+ }
}
- for (l = unhandled_open_in_app_uris; l != NULL; l = l->next) {
- uri = l->data;
+ if (open_files) {
+ for (l = open_in_app_parameters; l != NULL; l = l->next) {
+ one_parameters = l->data;
+
+ nautilus_launch_application_by_uri (one_parameters->application,
+ one_parameters->uris,
+ parameters->parent_window);
+ application_launch_parameters_free (one_parameters);
+ }
+
+ for (l = unhandled_open_in_app_uris; l != NULL; l = l->next) {
+ uri = l->data;
- /* this does not block */
- application_unhandled_uri (parameters, uri);
+ /* this does not block */
+ application_unhandled_uri (parameters, uri);
+ }
}
window_info = NULL;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]