[file-roller: 47/123] fixed creation of archives from the nautilus context menu
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [file-roller: 47/123] fixed creation of archives from the nautilus context menu
- Date: Mon, 6 Aug 2012 13:44:49 +0000 (UTC)
commit e0833fb7f12b5a917875d4e75a191cb4623e0e8f
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sat Jul 21 11:20:16 2012 +0200
fixed creation of archives from the nautilus context menu
src/dlg-batch-add.c | 2 +-
src/fr-archive.c | 5 +++--
src/fr-window.c | 50 +++++++++++++++++++++++++++++++++-----------------
src/fr-window.h | 3 +++
4 files changed, 40 insertions(+), 20 deletions(-)
---
diff --git a/src/dlg-batch-add.c b/src/dlg-batch-add.c
index 87650e5..bc9aa72 100644
--- a/src/dlg-batch-add.c
+++ b/src/dlg-batch-add.c
@@ -335,7 +335,7 @@ add_clicked_cb (GtkWidget *widget,
set_archive_options (data);
gtk_widget_destroy (GET_WIDGET ("dialog"));
- fr_window_archive_new (window, archive_file);
+ fr_window_create_archive_and_continue (window, archive_file, NULL);
g_free (archive_name);
g_free (archive_dir);
diff --git a/src/fr-archive.c b/src/fr-archive.c
index c2b0356..941c4d7 100644
--- a/src/fr-archive.c
+++ b/src/fr-archive.c
@@ -1060,6 +1060,8 @@ add_directory__step2 (GList *file_list,
fr_archive_add_directory);
if (error != NULL) {
+ _g_string_list_free (dir_list);
+
g_simple_async_result_set_from_error (result, error);
g_simple_async_result_complete_in_idle (result);
}
@@ -1087,9 +1089,8 @@ add_directory__step2 (GList *file_list,
ad_data->user_data);
}
- g_object_unref (result);
_g_string_list_free (file_list);
- _g_string_list_free (dir_list);
+ g_object_unref (result);
add_directory_data_free (ad_data);
}
diff --git a/src/fr-window.c b/src/fr-window.c
index 2fed8c0..4a067d6 100644
--- a/src/fr-window.c
+++ b/src/fr-window.c
@@ -3921,6 +3921,36 @@ get_clipboard_data_from_selection_data (FrWindow *window,
}
+gboolean
+fr_window_create_archive_and_continue (FrWindow *window,
+ const char *uri,
+ GtkWindow *error_dialog_parent)
+{
+ gboolean result = FALSE;
+
+ if (fr_window_archive_new (FR_WINDOW (window), uri)) {
+ if (! fr_window_is_batch_mode (FR_WINDOW (window)))
+ gtk_window_present (GTK_WINDOW (window));
+ _archive_operation_completed (window, FR_ACTION_CREATING_NEW_ARCHIVE, NULL);
+
+ result = TRUE;
+ }
+ else {
+ GError *error;
+
+ error = g_error_new_literal (FR_ERROR, FR_ERROR_GENERIC, _("Archive type not supported."));
+ window->priv->load_error_parent_window = error_dialog_parent;
+ _archive_operation_completed (window, FR_ACTION_CREATING_NEW_ARCHIVE, error);
+
+ g_error_free (error);
+
+ result = FALSE;
+ }
+
+ return result;
+}
+
+
static void
new_archive_dialog_response_cb (GtkDialog *dialog,
int response,
@@ -3958,24 +3988,10 @@ new_archive_dialog_response_cb (GtkDialog *dialog,
fr_window_set_encrypt_header (FR_WINDOW (archive_window), encrypt_header);
fr_window_set_volume_size (FR_WINDOW (archive_window), volume_size);
- if (fr_window_archive_new (FR_WINDOW (archive_window), uri)) {
+ if (fr_window_create_archive_and_continue (FR_WINDOW (archive_window), uri, GTK_WINDOW (dialog)))
gtk_widget_destroy (GTK_WIDGET (dialog));
- if (! fr_window_is_batch_mode (FR_WINDOW (archive_window)))
- gtk_window_present (GTK_WINDOW (archive_window));
- _archive_operation_completed (window, FR_ACTION_CREATING_NEW_ARCHIVE, NULL);
- }
- else {
- GError *error;
-
- if (new_window)
- gtk_widget_destroy (archive_window);
-
- error = g_error_new_literal (FR_ERROR, FR_ERROR_GENERIC, _("Archive type not supported."));
- window->priv->load_error_parent_window = GTK_WINDOW (dialog);
- _handle_archive_operation_error (window, NULL, FR_ACTION_CREATING_ARCHIVE, error, NULL, NULL);
-
- g_error_free (error);
- }
+ else if (new_window)
+ gtk_widget_destroy (archive_window);
g_free (uri);
}
diff --git a/src/fr-window.h b/src/fr-window.h
index 7e1bcf1..6e24a18 100644
--- a/src/fr-window.h
+++ b/src/fr-window.h
@@ -232,6 +232,9 @@ void fr_window_stop (FrWindow *window);
/**/
void fr_window_action_new_archive (FrWindow *window);
+gboolean fr_window_create_archive_and_continue (FrWindow *window,
+ const char *uri,
+ GtkWindow *error_dialog_parent);
void fr_window_action_save_as (FrWindow *window);
void fr_window_view_last_output (FrWindow *window,
const char *title);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]