[file-roller] fixed cut&paste for rar archives
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [file-roller] fixed cut&paste for rar archives
- Date: Tue, 27 Nov 2012 09:26:35 +0000 (UTC)
commit 63639f43737c1c75a9bfa879e44eb27feae90061
Author: Paolo Bacchilega <paobac src gnome org>
Date: Mon Nov 26 23:39:37 2012 +0100
fixed cut&paste for rar archives
paste the files before cutting to deal with commands such as 'rar'
that delete the archive when all its content is deleted.
[bug fixed]
src/fr-window.c | 83 +++++++++++++++++++++++++++++-------------------------
1 files changed, 45 insertions(+), 38 deletions(-)
---
diff --git a/src/fr-window.c b/src/fr-window.c
index a7f6953..e033869 100644
--- a/src/fr-window.c
+++ b/src/fr-window.c
@@ -8411,6 +8411,11 @@ _paste_from_archive_operation_completed (FrWindow *window,
_handle_archive_operation_error (window, archive, action, error, NULL, NULL);
if (error != NULL) {
+ if (window->priv->second_password != NULL) {
+ g_free (window->priv->second_password);
+ window->priv->second_password = NULL;
+ }
+
fr_clipboard_data_unref (window->priv->clipboard_data);
window->priv->clipboard_data = NULL;
}
@@ -8418,49 +8423,20 @@ _paste_from_archive_operation_completed (FrWindow *window,
static void
-paste_from_archive_paste_clipboard_ready_cb (GObject *source_object,
- GAsyncResult *result,
- gpointer user_data)
+paste_from_archive_completed_successfully (FrWindow *window)
{
- FrWindow *window = user_data;
- GError *error = NULL;
-
- fr_archive_operation_finish (FR_ARCHIVE (source_object), result, &error);
- _paste_from_archive_operation_completed (window, FR_ACTION_PASTING_FILES, error);
+ _paste_from_archive_operation_completed (window, FR_ACTION_PASTING_FILES, NULL);
fr_clipboard_data_unref (window->priv->clipboard_data);
window->priv->clipboard_data = NULL;
- if (error == NULL)
- fr_window_archive_reload (window);
-
- _g_error_free (error);
-}
-
-
-static void
-add_pasted_files (FrWindow *window,
- FrClipboardData *data)
-{
if (window->priv->second_password != NULL) {
g_free (window->priv->second_password);
window->priv->second_password = NULL;
}
- fr_archive_paste_clipboard (window->archive,
- data->file,
- data->password,
- window->priv->encrypt_header,
- window->priv->compression,
- window->priv->volume_size,
- data->op,
- data->base_dir,
- data->files,
- data->tmp_dir,
- data->current_dir,
- window->priv->cancellable,
- paste_from_archive_paste_clipboard_ready_cb,
- window);
+ window->priv->archive_new = FALSE;
+ fr_window_archive_reload (window);
}
@@ -8478,14 +8454,14 @@ paste_from_archive_remove_ready_cb (GObject *source_object,
return;
}
- add_pasted_files (window, window->priv->clipboard_data);
+ paste_from_archive_completed_successfully (window);
}
static void
-paste_from_archive_extract_ready_cb (GObject *source_object,
- GAsyncResult *result,
- gpointer user_data)
+paste_from_archive_paste_clipboard_ready_cb (GObject *source_object,
+ GAsyncResult *result,
+ gpointer user_data)
{
FrWindow *window = user_data;
GError *error = NULL;
@@ -8506,7 +8482,38 @@ paste_from_archive_extract_ready_cb (GObject *source_object,
window);
}
else
- add_pasted_files (window, window->priv->clipboard_data);
+ paste_from_archive_completed_successfully (window);
+}
+
+
+static void
+paste_from_archive_extract_ready_cb (GObject *source_object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ FrWindow *window = user_data;
+ GError *error = NULL;
+
+ if (! fr_archive_operation_finish (FR_ARCHIVE (source_object), result, &error)) {
+ _paste_from_archive_operation_completed (window, FR_ACTION_PASTING_FILES, error);
+ g_error_free (error);
+ return;
+ }
+
+ fr_archive_paste_clipboard (window->archive,
+ window->priv->clipboard_data->file,
+ window->priv->password,
+ window->priv->encrypt_header,
+ window->priv->compression,
+ window->priv->volume_size,
+ window->priv->clipboard_data->op,
+ window->priv->clipboard_data->base_dir,
+ window->priv->clipboard_data->files,
+ window->priv->clipboard_data->tmp_dir,
+ window->priv->clipboard_data->current_dir,
+ window->priv->cancellable,
+ paste_from_archive_paste_clipboard_ready_cb,
+ window);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]