diff --git a/SOURCES/0001-Meson-Make-sure-__GNU_SOURCE-is-set.patch b/SOURCES/0001-Meson-Make-sure-__GNU_SOURCE-is-set.patch new file mode 100644 index 0000000..968129d --- /dev/null +++ b/SOURCES/0001-Meson-Make-sure-__GNU_SOURCE-is-set.patch @@ -0,0 +1,50 @@ +From 0cc6b39e0447560668370832e10090f6f9068473 Mon Sep 17 00:00:00 2001 +From: Carlos Soriano +Date: Fri, 8 Jun 2018 19:03:09 +0200 +Subject: [PATCH] Meson: Make sure __GNU_SOURCE is set + +Otherwise the build fails in some systems like RHEL. +--- + meson.build | 3 +++ + src/nautilus-file.c | 4 ++++ + 2 files changed, 7 insertions(+) + +diff --git a/meson.build b/meson.build +index e3e6875d7..db648eb50 100644 +--- a/meson.build ++++ b/meson.build +@@ -5,6 +5,7 @@ project ('nautilus', 'c', + license: 'GPL3+') + + add_global_arguments ('-Wno-deprecated-declarations', language:'c') ++add_project_arguments('-D_GNU_SOURCE', language: 'c') + + bindir = get_option ('bindir') + datadir = get_option ('datadir') +@@ -80,6 +81,8 @@ if get_option ('enable-selinux') + conf.set10 ('HAVE_SELINUX', true) + endif + ++conf.set10('_GNU_SOURCE', true) ++ + tracker_sparql = dependency ('tracker-sparql-2.0', required: false) + if not tracker_sparql.found() + tracker_sparql = dependency ('tracker-sparql-1.0') +diff --git a/src/nautilus-file.c b/src/nautilus-file.c +index 053158cb6..1968bf277 100644 +--- a/src/nautilus-file.c ++++ b/src/nautilus-file.c +@@ -19,6 +19,10 @@ + * Author: Darin Adler + */ + ++#ifndef _GNU_SOURCE ++# define _GNU_SOURCE 1 ++#endif ++ + #include + #include "nautilus-file.h" + +-- +2.17.1 + diff --git a/SOURCES/0001-file-Make-sure-we-include-necessary-headers.patch b/SOURCES/0001-file-Make-sure-we-include-necessary-headers.patch new file mode 100644 index 0000000..6d71bdb --- /dev/null +++ b/SOURCES/0001-file-Make-sure-we-include-necessary-headers.patch @@ -0,0 +1,29 @@ +From 408e968d8a3382284909ffe66c0d5a62c9e5f1c0 Mon Sep 17 00:00:00 2001 +From: Carlos Soriano +Date: Fri, 8 Jun 2018 17:22:23 +0200 +Subject: [PATCH 1/2] file: Make sure we include necessary headers + +setpwent is used but we didn't include the necessary headers. + +It was building in Fedora because some other header included it, +but that's not the case in RHEL. +--- + src/nautilus-file.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/nautilus-file.c b/src/nautilus-file.c +index cff660f1f..053158cb6 100644 +--- a/src/nautilus-file.c ++++ b/src/nautilus-file.c +@@ -55,6 +55,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include +-- +2.17.1 + diff --git a/SOURCES/0001-general-remove-gnome-autoar.patch b/SOURCES/0001-general-remove-gnome-autoar.patch new file mode 100644 index 0000000..0be1bff --- /dev/null +++ b/SOURCES/0001-general-remove-gnome-autoar.patch @@ -0,0 +1,2933 @@ +From c5fbd2427753add9f05cc87d0f25789cce37b2e2 Mon Sep 17 00:00:00 2001 +From: Carlos Soriano +Date: Wed, 6 Jun 2018 14:59:39 +0200 +Subject: [PATCH] Remove autoar + +--- + meson.build | 2 - + po/POTFILES.in | 4 +- + src/meson.build | 5 +- + src/nautilus-compress-dialog-controller.c | 339 -------- + src/nautilus-compress-dialog-controller.h | 36 - + src/nautilus-file-operations.c | 857 ------------------- + src/nautilus-file-operations.h | 14 - + src/nautilus-file-undo-operations.c | 320 ------- + src/nautilus-file-undo-operations.h | 58 -- + src/nautilus-file.c | 38 +- + src/nautilus-files-view.c | 636 +------------- + src/nautilus-mime-actions.c | 28 - + src/resources/nautilus.gresource.xml | 1 - + src/resources/ui/nautilus-compress-dialog.ui | 186 ---- + 14 files changed, 37 insertions(+), 2487 deletions(-) + delete mode 100644 src/nautilus-compress-dialog-controller.c + delete mode 100644 src/nautilus-compress-dialog-controller.h + delete mode 100644 src/resources/ui/nautilus-compress-dialog.ui + +diff --git a/meson.build b/meson.build +index 6256193cc..7a450292d 100644 +--- a/meson.build ++++ b/meson.build +@@ -29,7 +29,6 @@ exif_ver = '>=0.6.20' + exempi_ver = '>=2.1.0' + notify_ver = '0.7.0' + schemas_ver = '>=3.8.0' +-autoar_ver = '>=0.2.1' + selinux_ver = '>=2.0' + + cc = meson.get_compiler ('c') +@@ -39,7 +38,6 @@ i18n = import ('i18n') + + glib = dependency ('glib-2.0', version: glib_ver) + gtk = dependency ('gtk+-3.0', version: gtk_ver) +-autoar = dependency ('gnome-autoar-0', version: autoar_ver) + + gail = dependency ('gail-3.0') + gnome_desktop = dependency ('gnome-desktop-3.0', version: gnome_desktop_ver) +diff --git a/po/POTFILES.in b/po/POTFILES.in +index 277a7ff0a..fbc896866 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -32,7 +32,6 @@ src/nautilus-canvas-view-container.c + src/nautilus-clipboard.c + src/nautilus-column-chooser.c + src/nautilus-column-utilities.c +-src/nautilus-compress-dialog-controller.c + src/nautilus-desktop-item-properties.c + src/nautilus-directory.c + src/nautilus-dnd.c +@@ -81,7 +80,6 @@ src/nautilus-x-content-bar.c + src/resources/gtk/help-overlay.ui + src/resources/gtk/menus.ui + src/resources/ui/nautilus-batch-rename-dialog.ui +-src/resources/ui/nautilus-compress-dialog.ui + src/resources/ui/nautilus-create-folder-dialog.ui + src/resources/ui/nautilus-files-view-context-menus.ui + src/resources/ui/nautilus-folder-is-empty.ui +@@ -100,4 +98,4 @@ src/resources/ui/nautilus-window.ui + src/gtk/nautilusgtkplacesview.c + src/gtk/nautilusgtkplacesviewrow.c + src/gtk/nautilusgtkplacesviewrow.ui +-src/gtk/nautilusgtkplacesview.ui ++src/gtk/nautilusgtkplacesview.ui +\ No newline at end of file +diff --git a/src/meson.build b/src/meson.build +index cc08345d8..e83190d25 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -176,8 +176,6 @@ libnautilus_sources = [ + 'nautilus-rename-file-popover-controller.h', + 'nautilus-new-folder-dialog-controller.c', + 'nautilus-new-folder-dialog-controller.h', +- 'nautilus-compress-dialog-controller.c', +- 'nautilus-compress-dialog-controller.h', + 'nautilus-operations-ui-manager.c', + 'nautilus-operations-ui-manager.h', + 'nautilus-file-operations.c', +@@ -264,7 +262,6 @@ libnautilus_sources = [ + + nautilus_deps = [glib, + gtk, +- autoar, + xml, + gsettings_desktop_schemas, + libgd_dep, +@@ -312,4 +309,4 @@ test ('nautilus', nautilus, args: ['--check', '--g-fatal-warnings']) + nautilus_autorun_software = executable ('nautilus-autorun-software', + 'nautilus-autorun-software.c', + dependencies: libnautilus_dep, +- install: true) ++ install: true) +\ No newline at end of file +diff --git a/src/nautilus-compress-dialog-controller.c b/src/nautilus-compress-dialog-controller.c +deleted file mode 100644 +index 3937181a8..000000000 +--- a/src/nautilus-compress-dialog-controller.c ++++ /dev/null +@@ -1,339 +0,0 @@ +-/* nautilus-compress-dialog-controller.h +- * +- * Copyright (C) 2016 the Nautilus developers +- * +- * This program is free software; you can redistribute it and/or +- * modify it under the terms of the GNU General Public License as +- * published by the Free Software Foundation; either version 2 of the +- * License, or (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- * General Public License for more details. +- * +- * You should have received a copy of the GNU General Public +- * License along with this program; if not, see . +- * +- */ +- +-#include +-#include +- +-#include +- +-#include "nautilus-compress-dialog-controller.h" +- +-#include "nautilus-global-preferences.h" +- +-struct _NautilusCompressDialogController +-{ +- NautilusFileNameWidgetController parent_instance; +- +- GtkWidget *compress_dialog; +- GtkWidget *description_stack; +- GtkWidget *name_entry; +- GtkWidget *zip_radio_button; +- GtkWidget *tar_xz_radio_button; +- GtkWidget *seven_zip_radio_button; +- +- const char *extension; +- +- gint response_handler_id; +-}; +- +-G_DEFINE_TYPE (NautilusCompressDialogController, nautilus_compress_dialog_controller, NAUTILUS_TYPE_FILE_NAME_WIDGET_CONTROLLER); +- +-static gboolean +-nautilus_compress_dialog_controller_name_is_valid (NautilusFileNameWidgetController *self, +- gchar *name, +- gchar **error_message) +-{ +- if (strlen (name) == 0) +- { +- return FALSE; +- } +- +- if (strstr (name, "/") != NULL) +- { +- *error_message = _("Archive names cannot contain “/”."); +- } +- else if (strcmp (name, ".") == 0) +- { +- *error_message = _("An archive cannot be called “.”."); +- } +- else if (strcmp (name, "..") == 0) +- { +- *error_message = _("An archive cannot be called “..”."); +- } +- +- return *error_message == NULL; +-} +- +-static gchar * +-nautilus_compress_dialog_controller_get_new_name (NautilusFileNameWidgetController *controller) +-{ +- NautilusCompressDialogController *self; +- g_autofree gchar *basename = NULL; +- gchar *error_message = NULL; +- gboolean valid_name; +- +- self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (controller); +- +- basename = NAUTILUS_FILE_NAME_WIDGET_CONTROLLER_CLASS (nautilus_compress_dialog_controller_parent_class)->get_new_name (controller); +- /* Do not check or add the extension if the name is invalid */ +- valid_name = nautilus_compress_dialog_controller_name_is_valid (controller, +- basename, +- &error_message); +- +- if (!valid_name) +- { +- return g_strdup (basename); +- } +- +- if (g_str_has_suffix (basename, self->extension)) +- { +- return g_strdup (basename); +- } +- +- return g_strconcat (basename, self->extension, NULL); +-} +- +-static void +-compress_dialog_controller_on_response (GtkDialog *dialog, +- gint response_id, +- gpointer user_data) +-{ +- NautilusCompressDialogController *controller; +- +- controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); +- +- if (response_id != GTK_RESPONSE_OK) +- { +- g_signal_emit_by_name (controller, "cancelled"); +- } +-} +- +-static void +-update_selected_format (NautilusCompressDialogController *self, +- NautilusCompressionFormat format) +-{ +- const char *extension; +- const char *description_label_name; +- GtkWidget *active_button; +- +- switch (format) +- { +- case NAUTILUS_COMPRESSION_ZIP: +- { +- extension = ".zip"; +- description_label_name = "zip-description-label"; +- active_button = self->zip_radio_button; +- } +- break; +- +- case NAUTILUS_COMPRESSION_TAR_XZ: +- { +- extension = ".tar.xz"; +- description_label_name = "tar-xz-description-label"; +- active_button = self->tar_xz_radio_button; +- } +- break; +- +- case NAUTILUS_COMPRESSION_7ZIP: +- { +- extension = ".7z"; +- description_label_name = "seven-zip-description-label"; +- active_button = self->seven_zip_radio_button; +- } +- break; +- +- default: +- { +- g_assert_not_reached (); +- } +- break; +- } +- +- self->extension = extension; +- +- gtk_stack_set_visible_child_name (GTK_STACK (self->description_stack), +- description_label_name); +- +- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (active_button), +- TRUE); +- +- g_settings_set_enum (nautilus_compression_preferences, +- NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT, +- format); +- /* Since the extension changes when the button is toggled, force a +- * verification of the new file name by simulating an entry change +- */ +- g_signal_emit_by_name (self->name_entry, "changed"); +-} +- +-static void +-zip_radio_button_on_toggled (GtkToggleButton *toggle_button, +- gpointer user_data) +-{ +- NautilusCompressDialogController *controller; +- +- controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); +- +- if (!gtk_toggle_button_get_active (toggle_button)) +- { +- return; +- } +- +- update_selected_format (controller, +- NAUTILUS_COMPRESSION_ZIP); +-} +- +-static void +-tar_xz_radio_button_on_toggled (GtkToggleButton *toggle_button, +- gpointer user_data) +-{ +- NautilusCompressDialogController *controller; +- +- controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); +- +- if (!gtk_toggle_button_get_active (toggle_button)) +- { +- return; +- } +- +- update_selected_format (controller, +- NAUTILUS_COMPRESSION_TAR_XZ); +-} +- +-static void +-seven_zip_radio_button_on_toggled (GtkToggleButton *toggle_button, +- gpointer user_data) +-{ +- NautilusCompressDialogController *controller; +- +- controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); +- +- if (!gtk_toggle_button_get_active (toggle_button)) +- { +- return; +- } +- +- update_selected_format (controller, +- NAUTILUS_COMPRESSION_7ZIP); +-} +- +-NautilusCompressDialogController * +-nautilus_compress_dialog_controller_new (GtkWindow *parent_window, +- NautilusDirectory *destination_directory, +- gchar *initial_name) +-{ +- NautilusCompressDialogController *self; +- g_autoptr (GtkBuilder) builder = NULL; +- GtkWidget *compress_dialog; +- GtkWidget *error_revealer; +- GtkWidget *error_label; +- GtkWidget *name_entry; +- GtkWidget *activate_button; +- GtkWidget *description_stack; +- GtkWidget *zip_radio_button; +- GtkWidget *tar_xz_radio_button; +- GtkWidget *seven_zip_radio_button; +- NautilusCompressionFormat format; +- +- builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/ui/nautilus-compress-dialog.ui"); +- compress_dialog = GTK_WIDGET (gtk_builder_get_object (builder, "compress_dialog")); +- error_revealer = GTK_WIDGET (gtk_builder_get_object (builder, "error_revealer")); +- error_label = GTK_WIDGET (gtk_builder_get_object (builder, "error_label")); +- name_entry = GTK_WIDGET (gtk_builder_get_object (builder, "name_entry")); +- activate_button = GTK_WIDGET (gtk_builder_get_object (builder, "activate_button")); +- zip_radio_button = GTK_WIDGET (gtk_builder_get_object (builder, "zip_radio_button")); +- tar_xz_radio_button = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_radio_button")); +- seven_zip_radio_button = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_radio_button")); +- description_stack = GTK_WIDGET (gtk_builder_get_object (builder, "description_stack")); +- +- gtk_window_set_transient_for (GTK_WINDOW (compress_dialog), +- parent_window); +- +- self = g_object_new (NAUTILUS_TYPE_COMPRESS_DIALOG_CONTROLLER, +- "error-revealer", error_revealer, +- "error-label", error_label, +- "name-entry", name_entry, +- "activate-button", activate_button, +- "containing-directory", destination_directory, NULL); +- +- self->compress_dialog = compress_dialog; +- self->zip_radio_button = zip_radio_button; +- self->tar_xz_radio_button = tar_xz_radio_button; +- self->seven_zip_radio_button = seven_zip_radio_button; +- self->description_stack = description_stack; +- self->name_entry = name_entry; +- +- self->response_handler_id = g_signal_connect (compress_dialog, +- "response", +- (GCallback) compress_dialog_controller_on_response, +- self); +- +- gtk_builder_add_callback_symbols (builder, +- "zip_radio_button_on_toggled", +- G_CALLBACK (zip_radio_button_on_toggled), +- "tar_xz_radio_button_on_toggled", +- G_CALLBACK (tar_xz_radio_button_on_toggled), +- "seven_zip_radio_button_on_toggled", +- G_CALLBACK (seven_zip_radio_button_on_toggled), +- NULL); +- gtk_builder_connect_signals (builder, self); +- +- format = g_settings_get_enum (nautilus_compression_preferences, +- NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT); +- +- update_selected_format (self, format); +- +- if (initial_name != NULL) +- { +- gtk_entry_set_text (GTK_ENTRY (name_entry), initial_name); +- } +- +- gtk_widget_show_all (compress_dialog); +- +- return self; +-} +- +-static void +-nautilus_compress_dialog_controller_init (NautilusCompressDialogController *self) +-{ +-} +- +-static void +-nautilus_compress_dialog_controller_finalize (GObject *object) +-{ +- NautilusCompressDialogController *self; +- +- self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (object); +- +- if (self->compress_dialog != NULL) +- { +- if (self->response_handler_id > 0) +- { +- g_signal_handler_disconnect (self->compress_dialog, +- self->response_handler_id); +- self->response_handler_id = 0; +- } +- gtk_widget_destroy (self->compress_dialog); +- self->compress_dialog = NULL; +- } +- +- G_OBJECT_CLASS (nautilus_compress_dialog_controller_parent_class)->finalize (object); +-} +- +-static void +-nautilus_compress_dialog_controller_class_init (NautilusCompressDialogControllerClass *klass) +-{ +- GObjectClass *object_class = G_OBJECT_CLASS (klass); +- NautilusFileNameWidgetControllerClass *parent_class = NAUTILUS_FILE_NAME_WIDGET_CONTROLLER_CLASS (klass); +- +- object_class->finalize = nautilus_compress_dialog_controller_finalize; +- +- parent_class->get_new_name = nautilus_compress_dialog_controller_get_new_name; +- parent_class->name_is_valid = nautilus_compress_dialog_controller_name_is_valid; +-} +diff --git a/src/nautilus-compress-dialog-controller.h b/src/nautilus-compress-dialog-controller.h +deleted file mode 100644 +index bb89413f1..000000000 +--- a/src/nautilus-compress-dialog-controller.h ++++ /dev/null +@@ -1,36 +0,0 @@ +-/* nautilus-compress-dialog-controller.h +- * +- * Copyright (C) 2016 the Nautilus developers +- * +- * This program is free software; you can redistribute it and/or +- * modify it under the terms of the GNU General Public License as +- * published by the Free Software Foundation; either version 2 of the +- * License, or (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- * General Public License for more details. +- * +- * You should have received a copy of the GNU General Public +- * License along with this program; if not, see . +- * +- */ +- +-#ifndef NAUTILUS_COMPRESS_DIALOG_CONTROLLER_H +-#define NAUTILUS_COMPRESS_DIALOG_CONTROLLER_H +- +-#include +-#include +- +-#include "nautilus-file-name-widget-controller.h" +-#include "nautilus-directory.h" +- +-#define NAUTILUS_TYPE_COMPRESS_DIALOG_CONTROLLER nautilus_compress_dialog_controller_get_type () +-G_DECLARE_FINAL_TYPE (NautilusCompressDialogController, nautilus_compress_dialog_controller, NAUTILUS, COMPRESS_DIALOG_CONTROLLER, NautilusFileNameWidgetController) +- +-NautilusCompressDialogController * nautilus_compress_dialog_controller_new (GtkWindow *parent_window, +- NautilusDirectory *destination_directory, +- gchar *initial_name); +- +-#endif /* NAUTILUS_COMPRESS_DIALOG_CONTROLLER_H */ +diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c +index 546acf835..5bcb4e357 100644 +--- a/src/nautilus-file-operations.c ++++ b/src/nautilus-file-operations.c +@@ -160,7 +160,6 @@ typedef enum + OP_KIND_MOVE, + OP_KIND_DELETE, + OP_KIND_TRASH, +- OP_KIND_COMPRESS + } OpKind; + + typedef struct +@@ -180,40 +179,6 @@ typedef struct + int last_reported_files_left; + } TransferInfo; + +-typedef struct +-{ +- CommonJob common; +- GList *source_files; +- GFile *destination_directory; +- GList *output_files; +- +- gdouble base_progress; +- +- guint64 archive_compressed_size; +- guint64 total_compressed_size; +- +- NautilusExtractCallback done_callback; +- gpointer done_callback_data; +-} ExtractJob; +- +-typedef struct +-{ +- CommonJob common; +- GList *source_files; +- GFile *output_file; +- +- AutoarFormat format; +- AutoarFilter filter; +- +- guint64 total_size; +- guint total_files; +- +- gboolean success; +- +- NautilusCreateCallback done_callback; +- gpointer done_callback_data; +-} CompressJob; +- + #define SECONDS_NEEDED_FOR_RELIABLE_TRANSFER_RATE 8 + #define NSEC_PER_MICROSEC 1000 + #define PROGRESS_NOTIFY_INTERVAL 100 * NSEC_PER_MICROSEC +@@ -3037,12 +3002,6 @@ report_preparing_count_progress (CommonJob *job, + source_info->num_files); + } + break; +- +- case OP_KIND_COMPRESS: +- s = g_strdup_printf (ngettext ("Preparing to compress %'d file", +- "Preparing to compress %'d files", +- source_info->num_files), +- source_info->num_files); + } + + nautilus_progress_info_take_details (job->progress, s); +@@ -3089,9 +3048,6 @@ get_scan_primary (OpKind kind) + { + return g_strdup (_("Error while moving files to trash.")); + } +- +- case OP_KIND_COMPRESS: +- return g_strdup (_("Error while compressing files.")); + } + } + +@@ -8034,819 +7990,6 @@ nautilus_file_mark_desktop_file_executable (GFile *file, + g_task_run_in_thread (task, mark_desktop_file_executable_task_thread_func); + } + +-static void +-extract_task_done (GObject *source_object, +- GAsyncResult *res, +- gpointer user_data) +-{ +- ExtractJob *extract_job; +- +- extract_job = user_data; +- +- if (extract_job->done_callback) +- { +- extract_job->done_callback (extract_job->output_files, +- extract_job->done_callback_data); +- } +- +- g_list_free_full (extract_job->source_files, g_object_unref); +- g_list_free_full (extract_job->output_files, g_object_unref); +- g_object_unref (extract_job->destination_directory); +- +- finalize_common ((CommonJob *) extract_job); +- +- nautilus_file_changes_consume_changes (TRUE); +-} +- +-static GFile * +-extract_job_on_decide_destination (AutoarExtractor *extractor, +- GFile *destination, +- GList *files, +- gpointer user_data) +-{ +- ExtractJob *extract_job = user_data; +- GFile *decided_destination; +- g_autofree char *basename = NULL; +- +- nautilus_progress_info_set_details (extract_job->common.progress, +- _("Verifying destination")); +- +- basename = g_file_get_basename (destination); +- decided_destination = nautilus_generate_unique_file_in_directory (extract_job->destination_directory, +- basename); +- +- if (job_aborted ((CommonJob *) extract_job)) +- { +- g_object_unref (decided_destination); +- return NULL; +- } +- +- extract_job->output_files = g_list_prepend (extract_job->output_files, +- decided_destination); +- +- return g_object_ref (decided_destination); +-} +- +-static void +-extract_job_on_progress (AutoarExtractor *extractor, +- guint64 archive_current_decompressed_size, +- guint archive_current_decompressed_files, +- gpointer user_data) +-{ +- ExtractJob *extract_job = user_data; +- CommonJob *common = user_data; +- GFile *source_file; +- char *details; +- double elapsed; +- double transfer_rate; +- int remaining_time; +- guint64 archive_total_decompressed_size; +- gdouble archive_weight; +- gdouble archive_decompress_progress; +- guint64 job_completed_size; +- gdouble job_progress; +- g_autofree gchar *basename = NULL; +- g_autofree gchar *formatted_size_job_completed_size = NULL; +- g_autofree gchar *formatted_size_total_compressed_size = NULL; +- +- source_file = autoar_extractor_get_source_file (extractor); +- +- basename = get_basename (source_file); +- nautilus_progress_info_take_status (common->progress, +- g_strdup_printf (_("Extracting “%s”"), +- basename)); +- +- archive_total_decompressed_size = autoar_extractor_get_total_size (extractor); +- +- archive_decompress_progress = (gdouble) archive_current_decompressed_size / +- (gdouble) archive_total_decompressed_size; +- +- archive_weight = 0; +- if (extract_job->total_compressed_size) +- { +- archive_weight = (gdouble) extract_job->archive_compressed_size / +- (gdouble) extract_job->total_compressed_size; +- } +- +- job_progress = archive_decompress_progress * archive_weight + extract_job->base_progress; +- +- elapsed = g_timer_elapsed (common->time, NULL); +- +- transfer_rate = 0; +- remaining_time = -1; +- +- job_completed_size = job_progress * extract_job->total_compressed_size; +- +- if (elapsed > 0) +- { +- transfer_rate = job_completed_size / elapsed; +- } +- if (transfer_rate > 0) +- { +- remaining_time = (extract_job->total_compressed_size - job_completed_size) / +- transfer_rate; +- } +- +- formatted_size_job_completed_size = g_format_size (job_completed_size); +- formatted_size_total_compressed_size = g_format_size (extract_job->total_compressed_size); +- if (elapsed < SECONDS_NEEDED_FOR_RELIABLE_TRANSFER_RATE || +- transfer_rate == 0) +- { +- /* To translators: %s will expand to a size like "2 bytes" or +- * "3 MB", so something like "4 kb / 4 MB" +- */ +- details = g_strdup_printf (_("%s / %s"), formatted_size_job_completed_size, +- formatted_size_total_compressed_size); +- } +- else +- { +- g_autofree gchar *formatted_time = NULL; +- g_autofree gchar *formatted_size_transfer_rate = NULL; +- +- formatted_time = get_formatted_time (remaining_time); +- formatted_size_transfer_rate = g_format_size ((goffset) transfer_rate); +- /* To translators: %s will expand to a size like "2 bytes" or +- * "3 MB", %s to a time duration like "2 minutes". So the whole +- * thing will be something like +- * "2 kb / 4 MB -- 2 hours left (4kb/sec)" +- * +- * The singular/plural form will be used depending on the +- * remaining time (i.e. the %s argument). +- */ +- details = g_strdup_printf (ngettext ("%s / %s \xE2\x80\x94 %s left (%s/sec)", +- "%s / %s \xE2\x80\x94 %s left (%s/sec)", +- seconds_count_format_time_units (remaining_time)), +- formatted_size_job_completed_size, +- formatted_size_total_compressed_size, +- formatted_time, +- formatted_size_transfer_rate); +- } +- +- nautilus_progress_info_take_details (common->progress, details); +- +- if (elapsed > SECONDS_NEEDED_FOR_APROXIMATE_TRANSFER_RATE) +- { +- nautilus_progress_info_set_remaining_time (common->progress, +- remaining_time); +- nautilus_progress_info_set_elapsed_time (common->progress, +- elapsed); +- } +- +- nautilus_progress_info_set_progress (common->progress, job_progress, 1); +-} +- +-static void +-extract_job_on_error (AutoarExtractor *extractor, +- GError *error, +- gpointer user_data) +-{ +- ExtractJob *extract_job = user_data; +- GFile *source_file; +- gint response_id; +- g_autofree gchar *basename = NULL; +- +- source_file = autoar_extractor_get_source_file (extractor); +- +- if (IS_IO_ERROR (error, NOT_SUPPORTED)) +- { +- handle_unsupported_compressed_file (extract_job->common.parent_window, +- source_file); +- +- return; +- } +- +- basename = get_basename (source_file); +- nautilus_progress_info_take_status (extract_job->common.progress, +- g_strdup_printf (_("Error extracting “%s”"), +- basename)); +- +- response_id = run_warning ((CommonJob *) extract_job, +- g_strdup_printf (_("There was an error while extracting “%s”."), +- basename), +- g_strdup (error->message), +- NULL, +- FALSE, +- CANCEL, +- SKIP, +- NULL); +- +- if (response_id == 0 || response_id == GTK_RESPONSE_DELETE_EVENT) +- { +- abort_job ((CommonJob *) extract_job); +- } +-} +- +-static void +-extract_job_on_completed (AutoarExtractor *extractor, +- gpointer user_data) +-{ +- ExtractJob *extract_job = user_data; +- GFile *output_file; +- +- output_file = G_FILE (extract_job->output_files->data); +- +- nautilus_file_changes_queue_file_added (output_file); +-} +- +-static void +-extract_job_on_scanned (AutoarExtractor *extractor, +- guint total_files, +- gpointer user_data) +-{ +- guint64 total_size; +- ExtractJob *extract_job; +- GFile *source_file; +- g_autofree gchar *basename; +- GFileInfo *fsinfo; +- guint64 free_size; +- +- extract_job = user_data; +- total_size = autoar_extractor_get_total_size (extractor); +- source_file = autoar_extractor_get_source_file (extractor); +- basename = get_basename (source_file); +- +- fsinfo = g_file_query_filesystem_info (source_file, +- G_FILE_ATTRIBUTE_FILESYSTEM_FREE "," +- G_FILE_ATTRIBUTE_FILESYSTEM_READONLY, +- extract_job->common.cancellable, +- NULL); +- free_size = g_file_info_get_attribute_uint64 (fsinfo, +- G_FILE_ATTRIBUTE_FILESYSTEM_FREE); +- +- /* FIXME: G_MAXUINT64 is the value used by autoar when the file size cannot +- * be determined. Ideally an API should be used instead. +- */ +- if (total_size != G_MAXUINT64 && total_size > free_size ) +- { +- nautilus_progress_info_take_status (extract_job->common.progress, +- g_strdup_printf (_("Error extracting “%s”"), +- basename)); +- run_error (&extract_job->common, +- g_strdup_printf (_("Not enough free space to extract %s"),basename), +- NULL, +- NULL, +- FALSE, +- CANCEL, +- NULL); +- +- abort_job ((CommonJob *) extract_job); +- } +-} +- +-static void +-report_extract_final_progress (ExtractJob *extract_job, +- gint total_files) +-{ +- char *status; +- g_autofree gchar *basename_dest = NULL; +- g_autofree gchar *formatted_size = NULL; +- +- nautilus_progress_info_set_destination (extract_job->common.progress, +- extract_job->destination_directory); +- basename_dest = get_basename (extract_job->destination_directory); +- +- if (total_files == 1) +- { +- GFile *source_file; +- g_autofree gchar * basename = NULL; +- +- source_file = G_FILE (extract_job->source_files->data); +- basename = get_basename (source_file); +- status = g_strdup_printf (_("Extracted “%s” to “%s”"), +- basename, +- basename_dest); +- } +- else +- { +- status = g_strdup_printf (ngettext ("Extracted %'d file to “%s”", +- "Extracted %'d files to “%s”", +- total_files), +- total_files, +- basename_dest); +- } +- +- nautilus_progress_info_take_status (extract_job->common.progress, +- status); +- formatted_size = g_format_size (extract_job->total_compressed_size); +- nautilus_progress_info_take_details (extract_job->common.progress, +- g_strdup_printf (_("%s / %s"), +- formatted_size, +- formatted_size)); +-} +- +-static void +-extract_task_thread_func (GTask *task, +- gpointer source_object, +- gpointer task_data, +- GCancellable *cancellable) +-{ +- ExtractJob *extract_job = task_data; +- GList *l; +- GList *existing_output_files = NULL; +- gint total_files; +- g_autofree guint64 *archive_compressed_sizes = NULL; +- gint i; +- +- g_timer_start (extract_job->common.time); +- +- nautilus_progress_info_start (extract_job->common.progress); +- +- nautilus_progress_info_set_details (extract_job->common.progress, +- _("Preparing to extract")); +- +- total_files = g_list_length (extract_job->source_files); +- +- archive_compressed_sizes = g_malloc0_n (total_files, sizeof (guint64)); +- extract_job->total_compressed_size = 0; +- +- for (l = extract_job->source_files, i = 0; +- l != NULL && !job_aborted ((CommonJob *) extract_job); +- l = l->next, i++) +- { +- GFile *source_file; +- g_autoptr (GFileInfo) info = NULL; +- +- source_file = G_FILE (l->data); +- info = g_file_query_info (source_file, +- G_FILE_ATTRIBUTE_STANDARD_SIZE, +- G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, +- extract_job->common.cancellable, +- NULL); +- +- if (info) +- { +- archive_compressed_sizes[i] = g_file_info_get_size (info); +- extract_job->total_compressed_size += archive_compressed_sizes[i]; +- } +- } +- +- extract_job->base_progress = 0; +- +- for (l = extract_job->source_files, i = 0; +- l != NULL && !job_aborted ((CommonJob *) extract_job); +- l = l->next, i++) +- { +- g_autoptr (AutoarExtractor) extractor = NULL; +- +- extractor = autoar_extractor_new (G_FILE (l->data), +- extract_job->destination_directory); +- +- autoar_extractor_set_notify_interval (extractor, +- PROGRESS_NOTIFY_INTERVAL); +- g_signal_connect (extractor, "scanned", +- G_CALLBACK (extract_job_on_scanned), +- extract_job); +- g_signal_connect (extractor, "error", +- G_CALLBACK (extract_job_on_error), +- extract_job); +- g_signal_connect (extractor, "decide-destination", +- G_CALLBACK (extract_job_on_decide_destination), +- extract_job); +- g_signal_connect (extractor, "progress", +- G_CALLBACK (extract_job_on_progress), +- extract_job); +- g_signal_connect (extractor, "completed", +- G_CALLBACK (extract_job_on_completed), +- extract_job); +- +- extract_job->archive_compressed_size = archive_compressed_sizes[i]; +- +- autoar_extractor_start (extractor, +- extract_job->common.cancellable); +- +- g_signal_handlers_disconnect_by_data (extractor, +- extract_job); +- +- extract_job->base_progress += (gdouble) extract_job->archive_compressed_size / +- (gdouble) extract_job->total_compressed_size; +- } +- +- if (!job_aborted ((CommonJob *) extract_job)) +- { +- report_extract_final_progress (extract_job, total_files); +- } +- +- for (l = extract_job->output_files; l != NULL; l = l->next) +- { +- GFile *output_file; +- +- output_file = G_FILE (l->data); +- +- if (g_file_query_exists (output_file, NULL)) +- { +- existing_output_files = g_list_prepend (existing_output_files, +- g_object_ref (output_file)); +- } +- } +- +- g_list_free_full (extract_job->output_files, g_object_unref); +- +- extract_job->output_files = existing_output_files; +- +- if (extract_job->common.undo_info) +- { +- if (extract_job->output_files) +- { +- NautilusFileUndoInfoExtract *undo_info; +- +- undo_info = NAUTILUS_FILE_UNDO_INFO_EXTRACT (extract_job->common.undo_info); +- +- nautilus_file_undo_info_extract_set_outputs (undo_info, +- extract_job->output_files); +- } +- else +- { +- /* There is nothing to undo if there is no output */ +- g_clear_object (&extract_job->common.undo_info); +- } +- } +-} +- +-void +-nautilus_file_operations_extract_files (GList *files, +- GFile *destination_directory, +- GtkWindow *parent_window, +- NautilusExtractCallback done_callback, +- gpointer done_callback_data) +-{ +- ExtractJob *extract_job; +- g_autoptr (GTask) task = NULL; +- +- extract_job = op_job_new (ExtractJob, parent_window); +- extract_job->source_files = g_list_copy_deep (files, +- (GCopyFunc) g_object_ref, +- NULL); +- extract_job->destination_directory = g_object_ref (destination_directory); +- extract_job->done_callback = done_callback; +- extract_job->done_callback_data = done_callback_data; +- +- inhibit_power_manager ((CommonJob *) extract_job, _("Extracting Files")); +- +- if (!nautilus_file_undo_manager_is_operating ()) +- { +- extract_job->common.undo_info = nautilus_file_undo_info_extract_new (files, +- destination_directory); +- } +- +- task = g_task_new (NULL, extract_job->common.cancellable, +- extract_task_done, extract_job); +- g_task_set_task_data (task, extract_job, NULL); +- g_task_run_in_thread (task, extract_task_thread_func); +-} +- +-static void +-compress_task_done (GObject *source_object, +- GAsyncResult *res, +- gpointer user_data) +-{ +- CompressJob *compress_job = user_data; +- +- if (compress_job->done_callback) +- { +- compress_job->done_callback (compress_job->output_file, +- compress_job->success, +- compress_job->done_callback_data); +- } +- +- g_object_unref (compress_job->output_file); +- g_list_free_full (compress_job->source_files, g_object_unref); +- +- finalize_common ((CommonJob *) compress_job); +- +- nautilus_file_changes_consume_changes (TRUE); +-} +- +-static void +-compress_job_on_progress (AutoarCompressor *compressor, +- guint64 completed_size, +- guint completed_files, +- gpointer user_data) +-{ +- CompressJob *compress_job = user_data; +- CommonJob *common = user_data; +- char *status; +- char *details; +- int files_left; +- double elapsed; +- double transfer_rate; +- int remaining_time; +- g_autofree gchar *basename_output_file = NULL; +- +- files_left = compress_job->total_files - completed_files; +- basename_output_file = get_basename (compress_job->output_file); +- if (compress_job->total_files == 1) +- { +- g_autofree gchar *basename_data = NULL; +- +- basename_data = get_basename (G_FILE (compress_job->source_files->data)); +- status = g_strdup_printf (_("Compressing “%s” into “%s”"), +- basename_data, +- basename_output_file); +- } +- else +- { +- status = g_strdup_printf (ngettext ("Compressing %'d file into “%s”", +- "Compressing %'d files into “%s”", +- compress_job->total_files), +- compress_job->total_files, +- basename_output_file); +- } +- nautilus_progress_info_take_status (common->progress, status); +- +- elapsed = g_timer_elapsed (common->time, NULL); +- +- transfer_rate = 0; +- remaining_time = -1; +- +- if (elapsed > 0) +- { +- if (completed_size > 0) +- { +- transfer_rate = completed_size / elapsed; +- remaining_time = (compress_job->total_size - completed_size) / transfer_rate; +- } +- else if (completed_files > 0) +- { +- transfer_rate = completed_files / elapsed; +- remaining_time = (compress_job->total_files - completed_files) / transfer_rate; +- } +- } +- +- if (elapsed < SECONDS_NEEDED_FOR_RELIABLE_TRANSFER_RATE || +- transfer_rate == 0) +- { +- if (compress_job->total_files == 1) +- { +- g_autofree gchar *formatted_size_completed_size = NULL; +- g_autofree gchar *formatted_size_total_size = NULL; +- +- formatted_size_completed_size = g_format_size (completed_size); +- formatted_size_total_size = g_format_size (compress_job->total_size); +- /* To translators: %s will expand to a size like "2 bytes" or "3 MB", so something like "4 kb / 4 MB" */ +- details = g_strdup_printf (_("%s / %s"), formatted_size_completed_size, +- formatted_size_total_size); +- } +- else +- { +- details = g_strdup_printf (_("%'d / %'d"), +- files_left > 0 ? completed_files + 1 : completed_files, +- compress_job->total_files); +- } +- } +- else +- { +- if (compress_job->total_files == 1) +- { +- g_autofree gchar *formatted_size_completed_size = NULL; +- g_autofree gchar *formatted_size_total_size = NULL; +- +- formatted_size_completed_size = g_format_size (completed_size); +- formatted_size_total_size = g_format_size (compress_job->total_size); +- +- if (files_left > 0) +- { +- g_autofree gchar *formatted_time = NULL; +- g_autofree gchar *formatted_size_transfer_rate = NULL; +- +- formatted_time = get_formatted_time (remaining_time); +- formatted_size_transfer_rate = g_format_size ((goffset) transfer_rate); +- /* To translators: %s will expand to a size like "2 bytes" or "3 MB", %s to a time duration like +- * "2 minutes". So the whole thing will be something like "2 kb / 4 MB -- 2 hours left (4kb/sec)" +- * +- * The singular/plural form will be used depending on the remaining time (i.e. the %s argument). +- */ +- details = g_strdup_printf (ngettext ("%s / %s \xE2\x80\x94 %s left (%s/sec)", +- "%s / %s \xE2\x80\x94 %s left (%s/sec)", +- seconds_count_format_time_units (remaining_time)), +- formatted_size_completed_size, +- formatted_size_total_size, +- formatted_time, +- formatted_size_transfer_rate); +- } +- else +- { +- /* To translators: %s will expand to a size like "2 bytes" or "3 MB". */ +- details = g_strdup_printf (_("%s / %s"), +- formatted_size_completed_size, +- formatted_size_total_size); +- } +- } +- else +- { +- if (files_left > 0) +- { +- g_autofree gchar *formatted_time = NULL; +- g_autofree gchar *formatted_size = NULL; +- +- formatted_time = get_formatted_time (remaining_time); +- formatted_size = g_format_size ((goffset) transfer_rate); +- /* To translators: %s will expand to a time duration like "2 minutes". +- * So the whole thing will be something like "1 / 5 -- 2 hours left (4kb/sec)" +- * +- * The singular/plural form will be used depending on the remaining time (i.e. the %s argument). +- */ +- details = g_strdup_printf (ngettext ("%'d / %'d \xE2\x80\x94 %s left (%s/sec)", +- "%'d / %'d \xE2\x80\x94 %s left (%s/sec)", +- seconds_count_format_time_units (remaining_time)), +- completed_files + 1, compress_job->total_files, +- formatted_time, +- formatted_size); +- } +- else +- { +- /* To translators: %'d is the number of files completed for the operation, +- * so it will be something like 2/14. */ +- details = g_strdup_printf (_("%'d / %'d"), +- completed_files, +- compress_job->total_files); +- } +- } +- } +- +- nautilus_progress_info_take_details (common->progress, details); +- +- if (elapsed > SECONDS_NEEDED_FOR_APROXIMATE_TRANSFER_RATE) +- { +- nautilus_progress_info_set_remaining_time (common->progress, +- remaining_time); +- nautilus_progress_info_set_elapsed_time (common->progress, +- elapsed); +- } +- +- nautilus_progress_info_set_progress (common->progress, +- completed_size, +- compress_job->total_size); +-} +- +-static void +-compress_job_on_error (AutoarCompressor *compressor, +- GError *error, +- gpointer user_data) +-{ +- CompressJob *compress_job = user_data; +- char *status; +- g_autofree gchar *basename_output_file = NULL; +- +- basename_output_file = get_basename (compress_job->output_file); +- if (compress_job->total_files == 1) +- { +- g_autofree gchar *basename_data = NULL; +- +- basename_data = get_basename (G_FILE (compress_job->source_files->data)); +- status = g_strdup_printf (_("Error compressing “%s” into “%s”"), +- basename_data, +- basename_output_file); +- } +- else +- { +- status = g_strdup_printf (ngettext ("Error compressing %'d file into “%s”", +- "Error compressing %'d files into “%s”", +- compress_job->total_files), +- compress_job->total_files, +- basename_output_file); +- } +- nautilus_progress_info_take_status (compress_job->common.progress, +- status); +- +- run_error ((CommonJob *) compress_job, +- g_strdup (_("There was an error while compressing files.")), +- g_strdup (error->message), +- NULL, +- FALSE, +- CANCEL, +- NULL); +- +- abort_job ((CommonJob *) compress_job); +-} +- +-static void +-compress_job_on_completed (AutoarCompressor *compressor, +- gpointer user_data) +-{ +- CompressJob *compress_job = user_data; +- g_autoptr (GFile) destination_directory = NULL; +- char *status; +- g_autofree gchar *basename_output_file = NULL; +- +- basename_output_file = get_basename (compress_job->output_file); +- if (compress_job->total_files == 1) +- { +- g_autofree gchar *basename_data = NULL; +- +- basename_data = get_basename (G_FILE (compress_job->source_files->data)); +- status = g_strdup_printf (_("Compressed “%s” into “%s”"), +- basename_data, +- basename_output_file); +- } +- else +- { +- status = g_strdup_printf (ngettext ("Compressed %'d file into “%s”", +- "Compressed %'d files into “%s”", +- compress_job->total_files), +- compress_job->total_files, +- basename_output_file); +- } +- +- nautilus_progress_info_take_status (compress_job->common.progress, +- status); +- +- nautilus_file_changes_queue_file_added (compress_job->output_file); +- +- destination_directory = g_file_get_parent (compress_job->output_file); +- nautilus_progress_info_set_destination (compress_job->common.progress, +- destination_directory); +-} +- +-static void +-compress_task_thread_func (GTask *task, +- gpointer source_object, +- gpointer task_data, +- GCancellable *cancellable) +-{ +- CompressJob *compress_job = task_data; +- SourceInfo source_info; +- g_autoptr (AutoarCompressor) compressor = NULL; +- +- g_timer_start (compress_job->common.time); +- +- nautilus_progress_info_start (compress_job->common.progress); +- +- scan_sources (compress_job->source_files, +- &source_info, +- (CommonJob *) compress_job, +- OP_KIND_COMPRESS); +- +- compress_job->total_files = source_info.num_files; +- compress_job->total_size = source_info.num_bytes; +- +- compressor = autoar_compressor_new (compress_job->source_files, +- compress_job->output_file, +- compress_job->format, +- compress_job->filter, +- FALSE); +- +- autoar_compressor_set_output_is_dest (compressor, TRUE); +- +- autoar_compressor_set_notify_interval (compressor, +- PROGRESS_NOTIFY_INTERVAL); +- +- g_signal_connect (compressor, "progress", +- G_CALLBACK (compress_job_on_progress), compress_job); +- g_signal_connect (compressor, "error", +- G_CALLBACK (compress_job_on_error), compress_job); +- g_signal_connect (compressor, "completed", +- G_CALLBACK (compress_job_on_completed), compress_job); +- autoar_compressor_start (compressor, +- compress_job->common.cancellable); +- +- compress_job->success = g_file_query_exists (compress_job->output_file, +- NULL); +- +- /* There is nothing to undo if the output was not created */ +- if (compress_job->common.undo_info != NULL && !compress_job->success) +- { +- g_clear_object (&compress_job->common.undo_info); +- } +-} +- +-void +-nautilus_file_operations_compress (GList *files, +- GFile *output, +- AutoarFormat format, +- AutoarFilter filter, +- GtkWindow *parent_window, +- NautilusCreateCallback done_callback, +- gpointer done_callback_data) +-{ +- g_autoptr (GTask) task = NULL; +- CompressJob *compress_job; +- +- compress_job = op_job_new (CompressJob, parent_window); +- compress_job->source_files = g_list_copy_deep (files, +- (GCopyFunc) g_object_ref, +- NULL); +- compress_job->output_file = g_object_ref (output); +- compress_job->format = format; +- compress_job->filter = filter; +- compress_job->done_callback = done_callback; +- compress_job->done_callback_data = done_callback_data; +- +- inhibit_power_manager ((CommonJob *) compress_job, _("Compressing Files")); +- +- if (!nautilus_file_undo_manager_is_operating ()) +- { +- compress_job->common.undo_info = nautilus_file_undo_info_compress_new (files, +- output, +- format, +- filter); +- } +- +- task = g_task_new (NULL, compress_job->common.cancellable, +- compress_task_done, compress_job); +- g_task_set_task_data (task, compress_job, NULL); +- g_task_run_in_thread (task, compress_task_thread_func); +-} +- + #if !defined (NAUTILUS_OMIT_SELF_CHECK) + + void +diff --git a/src/nautilus-file-operations.h b/src/nautilus-file-operations.h +index a479ee6e0..4d3c4547e 100644 +--- a/src/nautilus-file-operations.h ++++ b/src/nautilus-file-operations.h +@@ -26,7 +26,6 @@ + + #include + #include +-#include + + + #define SECONDS_NEEDED_FOR_APROXIMATE_TRANSFER_RATE 1 +@@ -151,18 +150,5 @@ void nautilus_file_mark_desktop_file_executable (GFile *file, + gboolean interactive, + NautilusOpCallback done_callback, + gpointer done_callback_data); +-void nautilus_file_operations_extract_files (GList *files, +- GFile *destination_directory, +- GtkWindow *parent_window, +- NautilusExtractCallback done_callback, +- gpointer done_callback_data); +-void nautilus_file_operations_compress (GList *files, +- GFile *output, +- AutoarFormat format, +- AutoarFilter filter, +- GtkWindow *parent_window, +- NautilusCreateCallback done_callback, +- gpointer done_callback_data); +- + + #endif /* NAUTILUS_FILE_OPERATIONS_H */ +diff --git a/src/nautilus-file-undo-operations.c b/src/nautilus-file-undo-operations.c +index e833d0578..956cd9b55 100644 +--- a/src/nautilus-file-undo-operations.c ++++ b/src/nautilus-file-undo-operations.c +@@ -2032,323 +2032,3 @@ nautilus_file_undo_info_ownership_new (NautilusFileUndoOp op_type, + + return NAUTILUS_FILE_UNDO_INFO (retval); + } +- +-/* extract */ +-G_DEFINE_TYPE (NautilusFileUndoInfoExtract, nautilus_file_undo_info_extract, NAUTILUS_TYPE_FILE_UNDO_INFO) +- +-struct _NautilusFileUndoInfoExtractDetails +-{ +- GList *sources; +- GFile *destination_directory; +- GList *outputs; +-}; +- +-static void +-extract_callback (GList *outputs, +- gpointer callback_data) +-{ +- NautilusFileUndoInfoExtract *self = NAUTILUS_FILE_UNDO_INFO_EXTRACT (callback_data); +- gboolean success; +- +- nautilus_file_undo_info_extract_set_outputs (self, outputs); +- +- success = self->priv->outputs != NULL; +- +- file_undo_info_transfer_callback (NULL, success, self); +-} +- +-static void +-extract_strings_func (NautilusFileUndoInfo *info, +- gchar **undo_label, +- gchar **undo_description, +- gchar **redo_label, +- gchar **redo_description) +-{ +- NautilusFileUndoInfoExtract *self = NAUTILUS_FILE_UNDO_INFO_EXTRACT (info); +- gint total_sources; +- gint total_outputs; +- +- *undo_label = g_strdup (_("_Undo Extract")); +- *redo_label = g_strdup (_("_Redo Extract")); +- +- total_sources = g_list_length (self->priv->sources); +- total_outputs = g_list_length (self->priv->outputs); +- +- if (total_outputs == 1) +- { +- GFile *output; +- g_autofree gchar *name = NULL; +- +- output = self->priv->outputs->data; +- name = g_file_get_parse_name (output); +- +- *undo_description = g_strdup_printf (_("Delete “%s”"), name); +- } +- else +- { +- *undo_description = g_strdup_printf (ngettext ("Delete %d extracted file", +- "Delete %d extracted files", +- total_outputs), +- total_outputs); +- } +- +- if (total_sources == 1) +- { +- GFile *source; +- g_autofree gchar *name = NULL; +- +- source = self->priv->sources->data; +- name = g_file_get_parse_name (source); +- +- *redo_description = g_strdup_printf (_("Extract “%s”"), name); +- } +- else +- { +- *redo_description = g_strdup_printf (ngettext ("Extract %d file", +- "Extract %d files", +- total_sources), +- total_sources); +- } +-} +- +-static void +-extract_redo_func (NautilusFileUndoInfo *info, +- GtkWindow *parent_window) +-{ +- NautilusFileUndoInfoExtract *self = NAUTILUS_FILE_UNDO_INFO_EXTRACT (info); +- +- nautilus_file_operations_extract_files (self->priv->sources, +- self->priv->destination_directory, +- parent_window, +- extract_callback, +- self); +-} +- +-static void +-extract_undo_func (NautilusFileUndoInfo *info, +- GtkWindow *parent_window) +-{ +- NautilusFileUndoInfoExtract *self = NAUTILUS_FILE_UNDO_INFO_EXTRACT (info); +- +- nautilus_file_operations_delete (self->priv->outputs, parent_window, +- file_undo_info_delete_callback, self); +-} +- +-static void +-nautilus_file_undo_info_extract_init (NautilusFileUndoInfoExtract *self) +-{ +- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, nautilus_file_undo_info_extract_get_type (), +- NautilusFileUndoInfoExtractDetails); +-} +- +-static void +-nautilus_file_undo_info_extract_finalize (GObject *obj) +-{ +- NautilusFileUndoInfoExtract *self = NAUTILUS_FILE_UNDO_INFO_EXTRACT (obj); +- +- g_object_unref (self->priv->destination_directory); +- g_list_free_full (self->priv->sources, g_object_unref); +- if (self->priv->outputs) +- { +- g_list_free_full (self->priv->outputs, g_object_unref); +- } +- +- G_OBJECT_CLASS (nautilus_file_undo_info_extract_parent_class)->finalize (obj); +-} +- +-static void +-nautilus_file_undo_info_extract_class_init (NautilusFileUndoInfoExtractClass *klass) +-{ +- GObjectClass *oclass = G_OBJECT_CLASS (klass); +- NautilusFileUndoInfoClass *iclass = NAUTILUS_FILE_UNDO_INFO_CLASS (klass); +- +- oclass->finalize = nautilus_file_undo_info_extract_finalize; +- +- iclass->undo_func = extract_undo_func; +- iclass->redo_func = extract_redo_func; +- iclass->strings_func = extract_strings_func; +- +- g_type_class_add_private (klass, sizeof (NautilusFileUndoInfoExtractDetails)); +-} +- +-void +-nautilus_file_undo_info_extract_set_outputs (NautilusFileUndoInfoExtract *self, +- GList *outputs) +-{ +- if (self->priv->outputs) +- { +- g_list_free_full (self->priv->outputs, g_object_unref); +- } +- self->priv->outputs = g_list_copy_deep (outputs, +- (GCopyFunc) g_object_ref, +- NULL); +-} +- +-NautilusFileUndoInfo * +-nautilus_file_undo_info_extract_new (GList *sources, +- GFile *destination_directory) +-{ +- NautilusFileUndoInfoExtract *self; +- +- self = g_object_new (NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT, +- "item-count", 1, +- "op-type", NAUTILUS_FILE_UNDO_OP_EXTRACT, +- NULL); +- +- self->priv->sources = g_list_copy_deep (sources, +- (GCopyFunc) g_object_ref, +- NULL); +- self->priv->destination_directory = g_object_ref (destination_directory); +- +- return NAUTILUS_FILE_UNDO_INFO (self); +-} +- +- +-/* compress */ +-G_DEFINE_TYPE (NautilusFileUndoInfoCompress, nautilus_file_undo_info_compress, NAUTILUS_TYPE_FILE_UNDO_INFO) +- +-struct _NautilusFileUndoInfoCompressDetails +-{ +- GList *sources; +- GFile *output; +- AutoarFormat format; +- AutoarFilter filter; +-}; +- +-static void +-compress_callback (GFile *new_file, +- gboolean success, +- gpointer callback_data) +-{ +- NautilusFileUndoInfoCompress *self = NAUTILUS_FILE_UNDO_INFO_COMPRESS (callback_data); +- +- if (success) +- { +- g_object_unref (self->priv->output); +- +- self->priv->output = g_object_ref (new_file); +- } +- +- file_undo_info_transfer_callback (NULL, success, self); +-} +- +-static void +-compress_strings_func (NautilusFileUndoInfo *info, +- gchar **undo_label, +- gchar **undo_description, +- gchar **redo_label, +- gchar **redo_description) +-{ +- NautilusFileUndoInfoCompress *self = NAUTILUS_FILE_UNDO_INFO_COMPRESS (info); +- g_autofree gchar *output_name = NULL; +- gint sources_count; +- +- output_name = g_file_get_parse_name (self->priv->output); +- *undo_description = g_strdup_printf (_("Delete “%s”"), output_name); +- +- sources_count = g_list_length (self->priv->sources); +- if (sources_count == 1) +- { +- GFile *source; +- g_autofree gchar *source_name = NULL; +- +- source = self->priv->sources->data; +- source_name = g_file_get_parse_name (source); +- +- *redo_description = g_strdup_printf (_("Compress “%s”"), source_name); +- } +- else +- { +- *redo_description = g_strdup_printf (ngettext ("Compress %d file", +- "Compress %d files", +- sources_count), +- sources_count); +- } +- +- *undo_label = g_strdup (_("_Undo Compress")); +- *redo_label = g_strdup (_("_Redo Compress")); +-} +- +-static void +-compress_redo_func (NautilusFileUndoInfo *info, +- GtkWindow *parent_window) +-{ +- NautilusFileUndoInfoCompress *self = NAUTILUS_FILE_UNDO_INFO_COMPRESS (info); +- +- nautilus_file_operations_compress (self->priv->sources, +- self->priv->output, +- self->priv->format, +- self->priv->filter, +- parent_window, +- compress_callback, +- self); +-} +- +-static void +-compress_undo_func (NautilusFileUndoInfo *info, +- GtkWindow *parent_window) +-{ +- NautilusFileUndoInfoCompress *self = NAUTILUS_FILE_UNDO_INFO_COMPRESS (info); +- GList *files = NULL; +- +- files = g_list_prepend (files, self->priv->output); +- +- nautilus_file_operations_delete (files, parent_window, +- file_undo_info_delete_callback, self); +- +- g_list_free (files); +-} +- +-static void +-nautilus_file_undo_info_compress_init (NautilusFileUndoInfoCompress *self) +-{ +- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, nautilus_file_undo_info_compress_get_type (), +- NautilusFileUndoInfoCompressDetails); +-} +- +-static void +-nautilus_file_undo_info_compress_finalize (GObject *obj) +-{ +- NautilusFileUndoInfoCompress *self = NAUTILUS_FILE_UNDO_INFO_COMPRESS (obj); +- +- g_list_free_full (self->priv->sources, g_object_unref); +- g_clear_object (&self->priv->output); +- +- G_OBJECT_CLASS (nautilus_file_undo_info_compress_parent_class)->finalize (obj); +-} +- +-static void +-nautilus_file_undo_info_compress_class_init (NautilusFileUndoInfoCompressClass *klass) +-{ +- GObjectClass *oclass = G_OBJECT_CLASS (klass); +- NautilusFileUndoInfoClass *iclass = NAUTILUS_FILE_UNDO_INFO_CLASS (klass); +- +- oclass->finalize = nautilus_file_undo_info_compress_finalize; +- +- iclass->undo_func = compress_undo_func; +- iclass->redo_func = compress_redo_func; +- iclass->strings_func = compress_strings_func; +- +- g_type_class_add_private (klass, sizeof (NautilusFileUndoInfoCompressDetails)); +-} +- +-NautilusFileUndoInfo * +-nautilus_file_undo_info_compress_new (GList *sources, +- GFile *output, +- AutoarFormat format, +- AutoarFilter filter) +-{ +- NautilusFileUndoInfoCompress *self; +- +- self = g_object_new (NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS, +- "item-count", 1, +- "op-type", NAUTILUS_FILE_UNDO_OP_COMPRESS, +- NULL); +- +- self->priv->sources = g_list_copy_deep (sources, (GCopyFunc) g_object_ref, NULL); +- self->priv->output = g_object_ref (output); +- self->priv->format = format; +- self->priv->filter = filter; +- +- return NAUTILUS_FILE_UNDO_INFO (self); +-} +diff --git a/src/nautilus-file-undo-operations.h b/src/nautilus-file-undo-operations.h +index 630443f10..8a153c32d 100644 +--- a/src/nautilus-file-undo-operations.h ++++ b/src/nautilus-file-undo-operations.h +@@ -27,7 +27,6 @@ + + #include + #include +-#include + + typedef enum { + NAUTILUS_FILE_UNDO_OP_COPY, +@@ -38,8 +37,6 @@ typedef enum { + NAUTILUS_FILE_UNDO_OP_CREATE_EMPTY_FILE, + NAUTILUS_FILE_UNDO_OP_CREATE_FILE_FROM_TEMPLATE, + NAUTILUS_FILE_UNDO_OP_CREATE_FOLDER, +- NAUTILUS_FILE_UNDO_OP_EXTRACT, +- NAUTILUS_FILE_UNDO_OP_COMPRESS, + NAUTILUS_FILE_UNDO_OP_MOVE_TO_TRASH, + NAUTILUS_FILE_UNDO_OP_RESTORE_FROM_TRASH, + NAUTILUS_FILE_UNDO_OP_CREATE_LINK, +@@ -328,59 +325,4 @@ NautilusFileUndoInfo *nautilus_file_undo_info_ownership_new (NautilusFileUndoOp + const char *current_data, + const char *new_data); + +-/* extract */ +-#define NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT (nautilus_file_undo_info_extract_get_type ()) +-#define NAUTILUS_FILE_UNDO_INFO_EXTRACT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT, NautilusFileUndoInfoExtract)) +-#define NAUTILUS_FILE_UNDO_INFO_EXTRACT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT, NautilusFileUndoInfoExtractClass)) +-#define NAUTILUS_IS_FILE_UNDO_INFO_EXTRACT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT)) +-#define NAUTILUS_IS_FILE_UNDO_INFO_EXTRACT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT)) +-#define NAUTILUS_FILE_UNDO_INFO_EXTRACT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT, NautilusFileUndoInfoExtractClass)) +- +-typedef struct _NautilusFileUndoInfoExtract NautilusFileUndoInfoExtract; +-typedef struct _NautilusFileUndoInfoExtractClass NautilusFileUndoInfoExtractClass; +-typedef struct _NautilusFileUndoInfoExtractDetails NautilusFileUndoInfoExtractDetails; +- +-struct _NautilusFileUndoInfoExtract { +- NautilusFileUndoInfo parent; +- NautilusFileUndoInfoExtractDetails *priv; +-}; +- +-struct _NautilusFileUndoInfoExtractClass { +- NautilusFileUndoInfoClass parent_class; +-}; +- +-GType nautilus_file_undo_info_extract_get_type (void) G_GNUC_CONST; +-NautilusFileUndoInfo * nautilus_file_undo_info_extract_new (GList *sources, +- GFile *destination_directory); +-void nautilus_file_undo_info_extract_set_outputs (NautilusFileUndoInfoExtract *self, +- GList *outputs); +- +-/* compress */ +-#define NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS (nautilus_file_undo_info_compress_get_type ()) +-#define NAUTILUS_FILE_UNDO_INFO_COMPRESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS, NautilusFileUndoInfoCompress)) +-#define NAUTILUS_FILE_UNDO_INFO_COMPRESS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS, NautilusFileUndoInfoCompressClass)) +-#define NAUTILUS_IS_FILE_UNDO_INFO_COMPRESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS)) +-#define NAUTILUS_IS_FILE_UNDO_INFO_COMPRESS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS)) +-#define NAUTILUS_FILE_UNDO_INFO_COMPRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS, NautilusFileUndoInfoCompressClass)) +- +-typedef struct _NautilusFileUndoInfoCompress NautilusFileUndoInfoCompress; +-typedef struct _NautilusFileUndoInfoCompressClass NautilusFileUndoInfoCompressClass; +-typedef struct _NautilusFileUndoInfoCompressDetails NautilusFileUndoInfoCompressDetails; +- +-struct _NautilusFileUndoInfoCompress { +- NautilusFileUndoInfo parent; +- NautilusFileUndoInfoCompressDetails *priv; +-}; +- +-struct _NautilusFileUndoInfoCompressClass { +- NautilusFileUndoInfoClass parent_class; +-}; +- +-GType nautilus_file_undo_info_compress_get_type (void) G_GNUC_CONST; +-NautilusFileUndoInfo * nautilus_file_undo_info_compress_new (GList *sources, +- GFile *output, +- AutoarFormat format, +- AutoarFilter filter); +- +- + #endif /* __NAUTILUS_FILE_UNDO_OPERATIONS_H__ */ +diff --git a/src/nautilus-file.c b/src/nautilus-file.c +index 1657edcde..cff660f1f 100644 +--- a/src/nautilus-file.c ++++ b/src/nautilus-file.c +@@ -51,7 +51,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -8262,11 +8261,38 @@ real_is_special_link (NautilusFile *file) + gboolean + nautilus_file_is_archive (NautilusFile *file) + { +- g_autofree char *mime_type = NULL; +- +- mime_type = nautilus_file_get_mime_type (file); +- +- return autoar_check_mime_type_supported (mime_type); ++ char *mime_type; ++ int i; ++ static const char * archive_mime_types[] = { "application/x-gtar", ++ "application/x-zip", ++ "application/x-zip-compressed", ++ "application/zip", ++ "application/x-zip", ++ "application/x-tar", ++ "application/x-7z-compressed", ++ "application/x-rar", ++ "application/x-rar-compressed", ++ "application/x-jar", ++ "application/x-java-archive", ++ "application/x-war", ++ "application/x-ear", ++ "application/x-arj", ++ "application/x-gzip", ++ "application/x-bzip-compressed-tar", ++ "application/x-compressed-tar" }; ++ ++ g_return_val_if_fail (file != NULL, FALSE); ++ ++ mime_type = nautilus_file_get_mime_type (file); ++ for (i = 0; i < G_N_ELEMENTS (archive_mime_types); i++) { ++ if (!strcmp (mime_type, archive_mime_types[i])) { ++ g_free (mime_type); ++ return TRUE; ++ } ++ } ++ g_free (mime_type); ++ ++ return FALSE; + } + + +diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c +index 8784f63f8..90fcca9d6 100644 +--- a/src/nautilus-files-view.c ++++ b/src/nautilus-files-view.c +@@ -48,7 +48,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -75,7 +74,6 @@ + #include "nautilus-file-name-widget-controller.h" + #include "nautilus-rename-file-popover-controller.h" + #include "nautilus-new-folder-dialog-controller.h" +-#include "nautilus-compress-dialog-controller.h" + #include "nautilus-global-preferences.h" + #include "nautilus-link.h" + #include "nautilus-metadata.h" +@@ -171,7 +169,6 @@ typedef struct + + NautilusRenameFilePopoverController *rename_file_controller; + NautilusNewFolderDialogController *new_folder_controller; +- NautilusCompressDialogController *compress_controller; + + gboolean supports_zooming; + +@@ -310,12 +307,6 @@ static void nautilus_files_view_select_file (NautilusFilesView *view, + + static void update_templates_directory (NautilusFilesView *view); + +-static void extract_files (NautilusFilesView *view, +- GList *files, +- GFile *destination_directory); +-static void extract_files_to_chosen_location (NautilusFilesView *view, +- GList *files); +- + static void nautilus_files_view_check_empty_states (NautilusFilesView *view); + + static gboolean nautilus_files_view_is_searching (NautilusView *view); +@@ -749,15 +740,6 @@ nautilus_files_view_supports_creating_files (NautilusFilesView *view) + && !showing_recent_directory (view); + } + +-static gboolean +-nautilus_files_view_supports_extract_here (NautilusFilesView *view) +-{ +- g_return_val_if_fail (NAUTILUS_IS_FILES_VIEW (view), FALSE); +- +- return nautilus_files_view_supports_creating_files (view) +- && !nautilus_view_is_searching (NAUTILUS_VIEW (view)); +-} +- + static gboolean + nautilus_files_view_is_empty (NautilusFilesView *view) + { +@@ -1209,8 +1191,6 @@ nautilus_files_view_activate_files (NautilusFilesView *view, + gboolean confirm_multiple) + { + NautilusFilesViewPrivate *priv; +- GList *files_to_extract; +- GList *files_to_activate; + char *path; + + if (files == NULL) +@@ -1219,41 +1199,15 @@ nautilus_files_view_activate_files (NautilusFilesView *view, + } + + priv = nautilus_files_view_get_instance_private (view); +- +- files_to_extract = nautilus_file_list_filter (files, +- &files_to_activate, +- (NautilusFileFilterFunc) nautilus_mime_file_extracts, +- NULL); +- +- if (nautilus_files_view_supports_extract_here (view)) +- { +- g_autoptr (GFile) location = NULL; +- g_autoptr (GFile) parent = NULL; +- +- location = nautilus_file_get_location (NAUTILUS_FILE (g_list_first (files)->data)); +- /* Get a parent from a random file. We assume all files has a common parent. +- * But don't assume the parent is the view location, since that's not the +- * case in list view when expand-folder setting is set +- */ +- parent = g_file_get_parent (location); +- extract_files (view, files_to_extract, parent); +- } +- else +- { +- extract_files_to_chosen_location (view, files_to_extract); +- } +- + path = get_view_directory (view); + nautilus_mime_activate_files (nautilus_files_view_get_containing_window (view), + priv->slot, +- files_to_activate, ++ files, + path, + flags, + confirm_multiple); + + g_free (path); +- g_list_free (files_to_extract); +- g_list_free (files_to_activate); + } + + void +@@ -2085,232 +2039,6 @@ nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view, + nautilus_directory_unref (containing_directory); + } + +-typedef struct +-{ +- NautilusFilesView *view; +- GHashTable *added_locations; +-} CompressData; +- +-static void +-compress_done (GFile *new_file, +- gboolean success, +- gpointer user_data) +-{ +- CompressData *data; +- NautilusFilesView *view; +- NautilusFilesViewPrivate *priv; +- NautilusFile *file; +- +- data = user_data; +- view = data->view; +- +- if (view == NULL) +- { +- goto out; +- } +- +- priv = nautilus_files_view_get_instance_private (view); +- +- g_signal_handlers_disconnect_by_func (view, +- G_CALLBACK (track_newly_added_locations), +- data->added_locations); +- +- if (!success) +- { +- goto out; +- } +- +- file = nautilus_file_get (new_file); +- +- if (g_hash_table_contains (data->added_locations, new_file)) +- { +- /* The file was already added */ +- nautilus_files_view_select_file (view, file); +- nautilus_files_view_reveal_selection (view); +- } +- else +- { +- g_hash_table_insert (priv->pending_reveal, +- file, +- GUINT_TO_POINTER (TRUE)); +- } +- +- nautilus_file_unref (file); +-out: +- g_hash_table_destroy (data->added_locations); +- +- if (data->view != NULL) +- { +- g_object_remove_weak_pointer (G_OBJECT (data->view), +- (gpointer *) &data->view); +- } +- +- g_free (data); +-} +- +-static void +-compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *controller, +- gpointer user_data) +-{ +- NautilusFilesView *view; +- g_autofree gchar *name = NULL; +- GList *selection; +- GList *source_files = NULL; +- GList *l; +- CompressData *data; +- g_autoptr (GFile) output = NULL; +- g_autoptr (GFile) parent = NULL; +- NautilusCompressionFormat compression_format; +- NautilusFilesViewPrivate *priv; +- AutoarFormat format; +- AutoarFilter filter; +- +- view = NAUTILUS_FILES_VIEW (user_data); +- priv = nautilus_files_view_get_instance_private (view); +- +- selection = nautilus_files_view_get_selection_for_file_transfer (view); +- +- for (l = selection; l != NULL; l = l->next) +- { +- source_files = g_list_prepend (source_files, +- nautilus_file_get_location (l->data)); +- } +- source_files = g_list_reverse (source_files); +- +- name = nautilus_file_name_widget_controller_get_new_name (controller); +- /* Get a parent from a random file. We assume all files has a common parent. +- * But don't assume the parent is the view location, since that's not the +- * case in list view when expand-folder setting is set +- */ +- parent = g_file_get_parent (G_FILE (g_list_first (source_files)->data)); +- output = g_file_get_child (parent, name); +- +- data = g_new (CompressData, 1); +- data->view = view; +- data->added_locations = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, +- g_object_unref, NULL); +- g_object_add_weak_pointer (G_OBJECT (data->view), +- (gpointer *) &data->view); +- +- g_signal_connect_data (view, +- "add-files", +- G_CALLBACK (track_newly_added_locations), +- data->added_locations, +- NULL, +- G_CONNECT_AFTER); +- +- compression_format = g_settings_get_enum (nautilus_compression_preferences, +- NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT); +- +- switch (compression_format) +- { +- case NAUTILUS_COMPRESSION_ZIP: +- { +- format = AUTOAR_FORMAT_ZIP; +- filter = AUTOAR_FILTER_NONE; +- } +- break; +- +- case NAUTILUS_COMPRESSION_TAR_XZ: +- { +- format = AUTOAR_FORMAT_TAR; +- filter = AUTOAR_FILTER_XZ; +- } +- break; +- +- case NAUTILUS_COMPRESSION_7ZIP: +- { +- format = AUTOAR_FORMAT_7ZIP; +- filter = AUTOAR_FILTER_NONE; +- } +- break; +- +- default: +- g_assert_not_reached (); +- } +- +- nautilus_file_operations_compress (source_files, output, +- format, +- filter, +- nautilus_files_view_get_containing_window (view), +- compress_done, +- data); +- +- nautilus_file_list_free (selection); +- g_list_free_full (source_files, g_object_unref); +- g_clear_object (&priv->compress_controller); +-} +- +-static void +-compress_dialog_controller_on_cancelled (NautilusNewFolderDialogController *controller, +- gpointer user_data) +-{ +- NautilusFilesView *view; +- NautilusFilesViewPrivate *priv; +- +- view = NAUTILUS_FILES_VIEW (user_data); +- priv = nautilus_files_view_get_instance_private (view); +- +- g_clear_object (&priv->compress_controller); +-} +- +- +-static void +-nautilus_files_view_compress_dialog_new (NautilusFilesView *view) +-{ +- NautilusDirectory *containing_directory; +- NautilusFilesViewPrivate *priv; +- GList *selection; +- g_autofree char *common_prefix = NULL; +- +- priv = nautilus_files_view_get_instance_private (view); +- +- if (priv->compress_controller != NULL) +- { +- return; +- } +- +- containing_directory = nautilus_directory_get_by_uri (nautilus_files_view_get_backing_uri (view)); +- +- selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); +- +- if (g_list_length (selection) == 1) +- { +- g_autofree char *display_name = NULL; +- +- display_name = nautilus_file_get_display_name (selection->data); +- +- if (nautilus_file_is_directory (selection->data)) +- { +- common_prefix = g_steal_pointer (&display_name); +- } +- else +- { +- common_prefix = eel_filename_strip_extension (display_name); +- } +- } +- else +- { +- common_prefix = nautilus_get_common_filename_prefix (selection, +- MIN_COMMON_FILENAME_PREFIX_LENGTH); +- } +- +- priv->compress_controller = nautilus_compress_dialog_controller_new (nautilus_files_view_get_containing_window (view), +- containing_directory, +- common_prefix); +- +- g_signal_connect (priv->compress_controller, +- "name-accepted", +- (GCallback) compress_dialog_controller_on_name_accepted, +- view); +- g_signal_connect (priv->compress_controller, +- "cancelled", +- (GCallback) compress_dialog_controller_on_cancelled, +- view); +- +- nautilus_file_list_free (selection); +-} +- + static void + nautilus_files_view_new_folder (NautilusFilesView *directory_view, + gboolean with_selection) +@@ -3236,7 +2964,6 @@ nautilus_files_view_finalize (GObject *object) + g_clear_object (&priv->toolbar_menu_sections->extended_section); + g_clear_object (&priv->rename_file_controller); + g_clear_object (&priv->new_folder_controller); +- g_clear_object (&priv->compress_controller); + g_free (priv->toolbar_menu_sections); + + g_hash_table_destroy (priv->non_ready_files); +@@ -6303,296 +6030,6 @@ action_rename (GSimpleAction *action, + real_action_rename (NAUTILUS_FILES_VIEW (user_data)); + } + +-typedef struct +-{ +- NautilusFilesView *view; +- GHashTable *added_locations; +-} ExtractData; +- +-static void +-extract_done (GList *outputs, +- gpointer user_data) +-{ +- NautilusFilesViewPrivate *priv; +- ExtractData *data; +- GList *l; +- gboolean all_files_acknowledged; +- +- data = user_data; +- +- if (data->view == NULL) +- { +- goto out; +- } +- +- priv = nautilus_files_view_get_instance_private (data->view); +- +- g_signal_handlers_disconnect_by_func (data->view, +- G_CALLBACK (track_newly_added_locations), +- data->added_locations); +- +- if (outputs == NULL) +- { +- goto out; +- } +- +- all_files_acknowledged = TRUE; +- for (l = outputs; l && all_files_acknowledged; l = l->next) +- { +- all_files_acknowledged = g_hash_table_contains (data->added_locations, +- l->data); +- } +- +- if (all_files_acknowledged) +- { +- GList *selection = NULL; +- +- for (l = outputs; l != NULL; l = l->next) +- { +- selection = g_list_prepend (selection, +- nautilus_file_get (l->data)); +- } +- +- nautilus_files_view_set_selection (NAUTILUS_VIEW (data->view), +- selection); +- nautilus_files_view_reveal_selection (data->view); +- +- nautilus_file_list_free (selection); +- } +- else +- { +- for (l = outputs; l != NULL; l = l->next) +- { +- gboolean acknowledged; +- +- acknowledged = g_hash_table_contains (data->added_locations, +- l->data); +- +- g_hash_table_insert (priv->pending_reveal, +- nautilus_file_get (l->data), +- GUINT_TO_POINTER (acknowledged)); +- } +- } +-out: +- g_hash_table_destroy (data->added_locations); +- +- if (data->view != NULL) +- { +- g_object_remove_weak_pointer (G_OBJECT (data->view), +- (gpointer *) &data->view); +- } +- +- g_free (data); +-} +- +-static void +-extract_files (NautilusFilesView *view, +- GList *files, +- GFile *destination_directory) +-{ +- GList *locations = NULL; +- GList *l; +- gboolean extracting_to_current_directory; +- +- if (files == NULL) +- { +- return; +- } +- +- for (l = files; l != NULL; l = l->next) +- { +- locations = g_list_prepend (locations, +- nautilus_file_get_location (l->data)); +- } +- +- locations = g_list_reverse (locations); +- +- extracting_to_current_directory = g_file_equal (destination_directory, +- nautilus_view_get_location (NAUTILUS_VIEW (view))); +- +- if (extracting_to_current_directory) +- { +- ExtractData *data; +- +- data = g_new (ExtractData, 1); +- data->view = view; +- data->added_locations = g_hash_table_new_full (g_file_hash, +- (GEqualFunc) g_file_equal, +- g_object_unref, NULL); +- +- +- g_object_add_weak_pointer (G_OBJECT (data->view), +- (gpointer *) &data->view); +- +- g_signal_connect_data (view, +- "add-files", +- G_CALLBACK (track_newly_added_locations), +- data->added_locations, +- NULL, +- G_CONNECT_AFTER); +- +- nautilus_file_operations_extract_files (locations, +- destination_directory, +- nautilus_files_view_get_containing_window (view), +- extract_done, +- data); +- } +- else +- { +- nautilus_file_operations_extract_files (locations, +- destination_directory, +- nautilus_files_view_get_containing_window (view), +- NULL, +- NULL); +- } +- +- g_list_free_full (locations, g_object_unref); +-} +- +-typedef struct +-{ +- NautilusFilesView *view; +- GList *files; +-} ExtractToData; +- +-static void +-on_extract_destination_dialog_response (GtkDialog *dialog, +- gint response_id, +- gpointer user_data) +-{ +- ExtractToData *data; +- +- data = user_data; +- +- if (response_id == GTK_RESPONSE_OK) +- { +- g_autoptr (GFile) destination_directory = NULL; +- +- destination_directory = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog)); +- +- extract_files (data->view, data->files, destination_directory); +- } +- +- gtk_widget_destroy (GTK_WIDGET (dialog)); +- nautilus_file_list_free (data->files); +- g_free (data); +-} +- +-static void +-extract_files_to_chosen_location (NautilusFilesView *view, +- GList *files) +-{ +- NautilusFilesViewPrivate *priv; +- ExtractToData *data; +- GtkWidget *dialog; +- g_autofree char *uri = NULL; +- +- priv = nautilus_files_view_get_instance_private (view); +- +- if (files == NULL) +- { +- return; +- } +- +- data = g_new (ExtractToData, 1); +- +- dialog = gtk_file_chooser_dialog_new (_("Select Extract Destination"), +- GTK_WINDOW (nautilus_files_view_get_window (view)), +- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, +- _("_Cancel"), GTK_RESPONSE_CANCEL, +- _("_Select"), GTK_RESPONSE_OK, +- NULL); +- gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (dialog), FALSE); +- +- gtk_dialog_set_default_response (GTK_DIALOG (dialog), +- GTK_RESPONSE_OK); +- +- gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE); +- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); +- +- /* The file chooser will not be able to display the search directory, +- * so we need to get the base directory of the search if we are, in fact, +- * in search. +- */ +- if (nautilus_view_is_searching (NAUTILUS_VIEW (view))) +- { +- NautilusSearchDirectory *search_directory; +- NautilusDirectory *directory; +- +- search_directory = NAUTILUS_SEARCH_DIRECTORY (priv->model); +- directory = nautilus_search_directory_get_base_model (search_directory); +- uri = nautilus_directory_get_uri (directory); +- } +- else +- { +- uri = nautilus_directory_get_uri (priv->model); +- } +- +- gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dialog), uri); +- +- data->view = view; +- data->files = nautilus_file_list_copy (files); +- +- g_signal_connect (dialog, "response", +- G_CALLBACK (on_extract_destination_dialog_response), +- data); +- +- gtk_widget_show_all (dialog); +-} +- +-static void +-action_extract_here (GSimpleAction *action, +- GVariant *state, +- gpointer user_data) +-{ +- NautilusFilesView *view; +- GList *selection; +- g_autoptr (GFile) location = NULL; +- g_autoptr (GFile) parent = NULL; +- +- view = NAUTILUS_FILES_VIEW (user_data); +- +- selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); +- location = nautilus_file_get_location (NAUTILUS_FILE (g_list_first (selection)->data)); +- /* Get a parent from a random file. We assume all files has a common parent. +- * But don't assume the parent is the view location, since that's not the +- * case in list view when expand-folder setting is set +- */ +- parent = g_file_get_parent (location); +- +- extract_files (view, selection, parent); +- +- nautilus_file_list_free (selection); +-} +- +-static void +-action_extract_to (GSimpleAction *action, +- GVariant *state, +- gpointer user_data) +-{ +- NautilusFilesView *view; +- GList *selection; +- +- view = NAUTILUS_FILES_VIEW (user_data); +- +- selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); +- +- extract_files_to_chosen_location (view, selection); +- +- nautilus_file_list_free (selection); +-} +- +-static void +-action_compress (GSimpleAction *action, +- GVariant *state, +- gpointer user_data) +-{ +- NautilusFilesView *view = user_data; +- +- nautilus_files_view_compress_dialog_new (view); +-} +- +- + #define BG_KEY_PRIMARY_COLOR "primary-color" + #define BG_KEY_SECONDARY_COLOR "secondary-color" + #define BG_KEY_COLOR_TYPE "color-shading-type" +@@ -7052,9 +6489,6 @@ const GActionEntry view_entries[] = + { "restore-from-trash", action_restore_from_trash}, + { "paste-into", action_paste_files_into }, + { "rename", action_rename}, +- { "extract-here", action_extract_here }, +- { "extract-to", action_extract_to }, +- { "compress", action_compress }, + { "properties", action_properties}, + { "set-as-wallpaper", action_set_as_wallpaper }, + { "mount-volume", action_mount_volume }, +@@ -7363,40 +6797,6 @@ all_in_trash (GList *files) + return TRUE; + } + +-static gboolean +-can_extract_all (GList *files) +-{ +- NautilusFile *file; +- GList *l; +- +- for (l = files; l != NULL; l = l->next) +- { +- file = l->data; +- if (!nautilus_file_is_archive (file)) +- { +- return FALSE; +- } +- } +- return TRUE; +-} +- +-static gboolean +-nautilus_handles_all_files_to_extract (GList *files) +-{ +- NautilusFile *file; +- GList *l; +- +- for (l = files; l != NULL; l = l->next) +- { +- file = l->data; +- if (!nautilus_mime_file_extracts (file)) +- { +- return FALSE; +- } +- } +- return TRUE; +-} +- + GActionGroup * + nautilus_files_view_get_action_group (NautilusFilesView *view) + { +@@ -7429,9 +6829,6 @@ real_update_actions_state (NautilusFilesView *view) + gboolean can_trash_files; + gboolean can_copy_files; + gboolean can_paste_files_into; +- gboolean can_extract_files; +- gboolean handles_all_files_to_extract; +- gboolean can_extract_here; + gboolean item_opens_in_view; + gboolean is_read_only; + GAction *action; +@@ -7480,10 +6877,6 @@ real_update_actions_state (NautilusFilesView *view) + can_paste_files_into = (!selection_contains_recent && + selection_count == 1 && + can_paste_into_file (NAUTILUS_FILE (selection->data))); +- can_extract_files = selection_count != 0 && +- can_extract_all (selection); +- can_extract_here = nautilus_files_view_supports_extract_here (view); +- handles_all_files_to_extract = nautilus_handles_all_files_to_extract (selection); + settings_show_delete_permanently = g_settings_get_boolean (nautilus_preferences, + NAUTILUS_PREFERENCES_SHOW_DELETE_PERMANENTLY); + settings_show_create_link = g_settings_get_boolean (nautilus_preferences, +@@ -7519,17 +6912,6 @@ real_update_actions_state (NautilusFilesView *view) + + action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), + "extract-here"); +- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), +- can_extract_files && +- !handles_all_files_to_extract && +- can_extract_here); +- +- action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), +- "extract-to"); +- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), +- can_extract_files && +- (!handles_all_files_to_extract || +- can_extract_here)); + + action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), + "compress"); +@@ -7804,7 +7186,6 @@ update_selection_menu (NautilusFilesView *view) + gint selection_count; + gboolean show_app; + gboolean show_run; +- gboolean show_extract; + gboolean item_opens_in_view; + gchar *item_label; + GAppInfo *app; +@@ -7844,18 +7225,13 @@ update_selection_menu (NautilusFilesView *view) + g_free (item_label); + + /* Open With menu item */ +- show_extract = show_app = show_run = item_opens_in_view = selection_count != 0; ++ show_app = show_run = item_opens_in_view = selection_count != 0; + for (l = selection; l != NULL; l = l->next) + { + NautilusFile *file; + + file = NAUTILUS_FILE (l->data); + +- if (!nautilus_mime_file_extracts (file)) +- { +- show_extract = FALSE; +- } +- + if (!nautilus_mime_file_opens_in_external_app (file)) + { + show_app = FALSE; +@@ -7871,7 +7247,7 @@ update_selection_menu (NautilusFilesView *view) + item_opens_in_view = FALSE; + } + +- if (!show_extract && !show_app && !show_run && !item_opens_in_view) ++ if (!show_app && !show_run && !item_opens_in_view) + { + break; + } +@@ -7904,12 +7280,6 @@ update_selection_menu (NautilusFilesView *view) + { + item_label = g_strdup (_("Run")); + } +- else if (show_extract) +- { +- item_label = nautilus_files_view_supports_extract_here (view) ? +- g_strdup (_("Extract Here")) : +- g_strdup (_("Extract to…")); +- } + else + { + item_label = g_strdup (_("Open")); +diff --git a/src/nautilus-mime-actions.c b/src/nautilus-mime-actions.c +index 882716054..7a4029cbb 100644 +--- a/src/nautilus-mime-actions.c ++++ b/src/nautilus-mime-actions.c +@@ -56,7 +56,6 @@ typedef enum + ACTIVATION_ACTION_LAUNCH_IN_TERMINAL, + ACTIVATION_ACTION_OPEN_IN_VIEW, + ACTIVATION_ACTION_OPEN_IN_APPLICATION, +- ACTIVATION_ACTION_EXTRACT, + ACTIVATION_ACTION_DO_NOTHING, + } ActivationAction; + +@@ -715,20 +714,6 @@ get_activation_action (NautilusFile *file) + { + ActivationAction action; + char *activation_uri; +- gboolean handles_extract = FALSE; +- g_autoptr (GAppInfo) app_info = NULL; +- const gchar* app_id; +- +- app_info = nautilus_mime_get_default_application_for_file (file); +- if (app_info != NULL) +- { +- app_id = g_app_info_get_id (app_info); +- handles_extract = g_strcmp0 (app_id, NAUTILUS_DESKTOP_ID) == 0; +- } +- if (handles_extract && nautilus_file_is_archive (file)) +- { +- return ACTIVATION_ACTION_EXTRACT; +- } + + if (nautilus_file_is_nautilus_link (file)) + { +@@ -776,12 +761,6 @@ get_activation_action (NautilusFile *file) + return action; + } + +-gboolean +-nautilus_mime_file_extracts (NautilusFile *file) +-{ +- return get_activation_action (file) == ACTIVATION_ACTION_EXTRACT; +-} +- + gboolean + nautilus_mime_file_launches (NautilusFile *file) + { +@@ -1673,13 +1652,6 @@ activate_files (ActivateParameters *parameters) + } + break; + +- case ACTIVATION_ACTION_EXTRACT: +- { +- /* Extraction of files should be handled in the view */ +- g_assert_not_reached (); +- } +- break; +- + case ACTIVATION_ACTION_ASK: + { + g_assert_not_reached (); +diff --git a/src/resources/nautilus.gresource.xml b/src/resources/nautilus.gresource.xml +index 3dd60ba6d..90e07f319 100644 +--- a/src/resources/nautilus.gresource.xml ++++ b/src/resources/nautilus.gresource.xml +@@ -9,7 +9,6 @@ + ui/nautilus-toolbar-menu.ui + ui/nautilus-toolbar-view-menu.ui + ui/nautilus-create-folder-dialog.ui +- ui/nautilus-compress-dialog.ui + ui/nautilus-rename-file-popover.ui + ui/nautilus-files-view-context-menus.ui + ui/nautilus-progress-info-widget.ui +diff --git a/src/resources/ui/nautilus-compress-dialog.ui b/src/resources/ui/nautilus-compress-dialog.ui +deleted file mode 100644 +index 526e9eed2..000000000 +--- a/src/resources/ui/nautilus-compress-dialog.ui ++++ /dev/null +@@ -1,186 +0,0 @@ +- +- +- +- +- Create Archive +- False +- True +- center-on-parent +- True +- dialog +- 1 +- +- +- vertical +- 18 +- 12 +- 18 +- 18 +- 6 +- +- +- Archive name +- True +- 0 +- +- +- False +- True +- 1 +- +- +- +- +- True +- True +- +- +- False +- True +- 2 +- +- +- +- +- +- +- 4 +- 4 +- True +- 0 +- +- +- +- +- False +- True +- 3 +- +- +- +- +- horizontal +- True +- 0 +- +- +- .zip +- True +- +- +- +- True +- True +- 0 +- +- +- +- +- .tar.xz +- zip_radio_button +- True +- +- +- +- True +- True +- 1 +- +- +- +- +- .7z +- zip_radio_button +- True +- +- +- +- True +- True +- 2 +- +- +- +- +- False +- True +- 4 +- +- +- +- +- True +- False +- True +- +- +- True +- Compatible with all operating systems. +- 0 +- +- +- +- zip-description-label +- +- +- +- +- True +- Smaller archives but Linux and Mac only. +- 0 +- +- +- +- tar-xz-description-label +- +- +- +- +- True +- Smaller archives but must be installed on Windows and Mac. +- 0 +- +- +- +- seven-zip-description-label +- +- +- +- +- False +- True +- 5 +- +- +- +- +- +- +- Cancel +- True +- True +- True +- +- +- +- +- Create +- True +- True +- True +- True +- False +- +- +- +- activate_button +- cancel_button +- +- +- +-- +2.17.1 + diff --git a/SOURCES/0001-meson-Request-c11-when-possible.patch b/SOURCES/0001-meson-Request-c11-when-possible.patch new file mode 100644 index 0000000..053c1a3 --- /dev/null +++ b/SOURCES/0001-meson-Request-c11-when-possible.patch @@ -0,0 +1,22 @@ +From 6b58c14e82f80c2318513dae8f2646a18d5b60d3 Mon Sep 17 00:00:00 2001 +From: Carlos Soriano +Date: Fri, 8 Jun 2018 17:22:08 +0200 +Subject: [PATCH 1/2] meson: Request c11 when possible + +--- + meson.build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/meson.build b/meson.build +index 7a450292d..e3e6875d7 100644 +--- a/meson.build ++++ b/meson.build +@@ -1,4 +1,5 @@ + project ('nautilus', 'c', ++ default_options: ['c_std=c11'], + version: '3.26.3.1', + meson_version: '>=0.40.0', + license: 'GPL3+') +-- +2.17.1 + diff --git a/SOURCES/0001-meson-Use-python2-for-postinstall.patch b/SOURCES/0001-meson-Use-python2-for-postinstall.patch new file mode 100644 index 0000000..ce866ac --- /dev/null +++ b/SOURCES/0001-meson-Use-python2-for-postinstall.patch @@ -0,0 +1,46 @@ +From 268b8d7343591b9c1cb379f6e65f061a4da461e8 Mon Sep 17 00:00:00 2001 +From: Carlos Soriano +Date: Fri, 8 Jun 2018 19:53:02 +0200 +Subject: [PATCH] meson: Use python2 for postinstall + +RHEL 7 doesn't have python3... +--- + build-aux/meson/postinstall.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/build-aux/meson/postinstall.py b/build-aux/meson/postinstall.py +index 81afb18b7..04c6464d7 100755 +--- a/build-aux/meson/postinstall.py ++++ b/build-aux/meson/postinstall.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python3 ++#!/usr/bin/env python2 + + import os + import subprocess +@@ -8,19 +8,19 @@ datadir = os.path.join(prefix, 'share') + + # Packaging tools define DESTDIR and this isn't needed for them + if 'DESTDIR' not in os.environ: +- print('Updating icon cache...') ++ print 'Updating icon cache...' + icon_cache_dir = os.path.join(datadir, 'icons', 'hicolor') + if not os.path.exists(icon_cache_dir): + os.makedirs(icon_cache_dir) + subprocess.call(['gtk-update-icon-cache', '-qtf', icon_cache_dir]) + +- print('Updating desktop database...') ++ print 'Updating desktop database...' + desktop_database_dir = os.path.join(datadir, 'applications') + if not os.path.exists(desktop_database_dir): + os.makedirs(desktop_database_dir) + subprocess.call(['update-desktop-database', '-q', desktop_database_dir]) + +- print('Compiling GSettings schemas...') ++ print 'Compiling GSettings schemas...' + schemas_dir = os.path.join(datadir, 'glib-2.0', 'schemas') + if not os.path.exists(schemas_dir): + os.makedirs(schemas_dir) +-- +2.17.1 + diff --git a/SPECS/nautilus.spec b/SPECS/nautilus.spec new file mode 100644 index 0000000..4822afd --- /dev/null +++ b/SPECS/nautilus.spec @@ -0,0 +1,1840 @@ +%global glib2_version 2.49.1 +%global gnome_desktop3_version 3.0.0 +%global gtk3_version 3.21.6 +%global libxml2_version 2.7.8 +%global libexif_version 0.6.20 +%global exempi_version 2.1.0 +%global gsettings_desktop_schemas_version 3.8.0 + +Name: nautilus +Version: 3.26.3.1 +Release: 2%{?dist} +Summary: File manager for GNOME + +License: GPLv3+ +URL: https://wiki.gnome.org/Apps/Nautilus +Source0: https://download.gnome.org/sources/%{name}/3.26/%{name}-%{version}.tar.xz + +# Don't use gnome-autoar which we don't currently have in RHEL 7.4 +Patch0: 0001-general-remove-gnome-autoar.patch +Patch1: 0001-meson-Request-c11-when-possible.patch +Patch2: 0001-file-Make-sure-we-include-necessary-headers.patch +Patch3: 0001-Meson-Make-sure-__GNU_SOURCE-is-set.patch +Patch4: 0001-meson-Use-python2-for-postinstall.patch + +BuildRequires: gtk-doc +BuildRequires: meson +BuildRequires: pkgconfig(exempi-2.0) >= %{exempi_version} +BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version} +BuildRequires: pkgconfig(gnome-desktop-3.0) >= %{gnome_desktop3_version} +BuildRequires: pkgconfig(gobject-introspection-1.0) +BuildRequires: pkgconfig(gsettings-desktop-schemas) >= %{gsettings_desktop_schemas_version} +BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version} +BuildRequires: pkgconfig(libexif) >= %{libexif_version} +BuildRequires: pkgconfig(libxml-2.0) >= %{libxml2_version} +BuildRequires: pkgconfig(tracker-sparql-1.0) +BuildRequires: pkgconfig(x11) +BuildRequires: /usr/bin/appstream-util +BuildRequires: desktop-file-utils +BuildRequires: gettext +BuildRequires: libselinux-devel +# For patch0 +BuildRequires: gettext-devel +BuildRequires: gtk-doc + +Requires: glib2%{_isa} >= %{glib2_version} +Requires: gsettings-desktop-schemas%{_isa} >= %{gsettings_desktop_schemas_version} +Requires: gtk3%{_isa} >= %{gtk3_version} +Requires: gvfs%{_isa} +Requires: libexif%{_isa} >= %{libexif_version} +# the main binary links against libnautilus-extension.so +# don't depend on soname, rather on exact version +Requires: %{name}-extensions%{_isa} = %{version}-%{release} + +# Explicitly conflict with older gedit for "enable-delete" setting removal +Conflicts: gedit < 2:3.16.0 + +%description +Nautilus is the file manager and graphical shell for the GNOME desktop +that makes it easy to manage your files and the rest of your system. +It allows to browse directories on local and remote filesystems, preview +files and launch applications associated with them. +It is also responsible for handling the icons on the GNOME desktop. + +%package extensions +Summary: Nautilus extensions library +License: LGPLv2+ + +%description extensions +This package provides the libraries used by nautilus extensions. + +%package devel +Summary: Support for developing nautilus extensions +License: LGPLv2+ +Requires: %{name}%{_isa} = %{version}-%{release} +Requires: %{name}-extensions%{_isa} = %{version}-%{release} + +%description devel +This package provides libraries and header files needed +for developing nautilus extensions. + +%prep +%autosetup -p1 + +%build +# RHEL 7 doesn't have python3... +%meson -Denable-gtk-doc=true +%meson_build + +%install +%meson_install + +# Update the screenshot shown in the software center +# +# NOTE: It would be *awesome* if this file was pushed upstream. +# +# See http://people.freedesktop.org/~hughsient/appdata/#screenshots for more details. +# +appstream-util replace-screenshots $RPM_BUILD_ROOT%{_datadir}/metainfo/org.gnome.Nautilus.appdata.xml \ + https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/org.gnome.Nautilus/a.png \ + https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/org.gnome.Nautilus/b.png \ + https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/org.gnome.Nautilus/c.png + +%find_lang %name + +%check +appstream-util validate-relax --nonet $RPM_BUILD_ROOT%{_datadir}/metainfo/org.gnome.Nautilus.appdata.xml +desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop + +%postun +if [ $1 -eq 0 ]; then + glib-compile-schemas %{_datadir}/glib-2.0/schemas >&/dev/null || : +fi + +%posttrans +glib-compile-schemas %{_datadir}/glib-2.0/schemas >&/dev/null || : + +%post extensions -p /sbin/ldconfig + +%postun extensions -p /sbin/ldconfig + +%files -f %{name}.lang +%doc NEWS README.md +%license LICENSE +%{_datadir}/applications/* +%{_bindir}/* +%{_datadir}/dbus-1/services/org.gnome.Nautilus.service +%{_datadir}/dbus-1/services/org.freedesktop.FileManager1.service +%{_datadir}/gnome-shell/search-providers/nautilus-search-provider.ini +%{_datadir}/icons/hicolor/*/apps/org.gnome.Nautilus.png +%{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Nautilus-symbolic.svg +%{_mandir}/man1/nautilus.1* +%{_datadir}/glib-2.0/schemas/org.gnome.nautilus.gschema.xml +%{_datadir}/metainfo/org.gnome.Nautilus.appdata.xml +%dir %{_libdir}/nautilus +%dir %{_libdir}/nautilus/extensions-3.0 +%{_libdir}/nautilus/extensions-3.0/libnautilus-sendto.so +%{_sysconfdir}/xdg/autostart/nautilus-autostart.desktop + +%files extensions +%license libnautilus-extension/LICENSE +%{_libdir}/libnautilus-extension.so.* +%{_libdir}/girepository-1.0/*.typelib +%dir %{_libdir}/nautilus + +%files devel +%{_includedir}/nautilus +%{_libdir}/pkgconfig/* +%{_libdir}/*.so +%{_datadir}/gir-1.0/*.gir +%dir %{_datadir}/gtk-doc/ +%dir %{_datadir}/gtk-doc/html/ +%doc %{_datadir}/gtk-doc/html/libnautilus-extension/ + +%changelog +* Wed Jun 06 2018 Carlos Soriano - 3.26.3.1-2 +- Rework autoar patch and remove the trusted patch, as it's included +- Resolves: #1569738 + +* Wed Jun 06 2018 Richard Hughes - 3.26.3.1-1 +- Update to 3.26.3.1 +- Resolves: #1569738 + +* Thu Nov 02 2017 Carlos Soriano 3.22.3-5 +- Fix exempi not being initialized. Upstream bugzilla.gnome.org/785292 + Resolves: #1496713 + +* Thu Nov 02 2017 Carlos Soriano 3.22.3-4 +- Fix desktop files security issue (upstream bugzilla.gnome.org/777991) + Resolves: #1490948 + +* Mon May 29 2017 Carlos Soriano 3.22.3-3 +- Add Japanese translation + Resolves: #1382632 + +* Wed May 17 2017 Carlos Soriano 3.22.3-2 +- Fix translation files for the remove-autoar patch + Resolves: #1382632 + +* Wed Mar 08 2017 Kalev Lember 3.22.3-1 +- Update to 3.22.3 +- Resolves: #1387026 + +* Wed Jul 20 2016 Carlos Soriano 3.14.3-12 +- Update icons on primary patch + Resolves: #1353613 + +* Wed Jul 20 2016 Carlos Soriano 3.14.3-11 +- Update icons on primary patch + Resolves: #1353613 + +* Tue Jul 12 2016 Carlos Soriano 3.14.3-10 +- Update icons on primary patch + Resolves: #1353613 + +* Fri Jul 01 2016 Carlos Soriano 3.14.3-9 +- Apply downstream translations +- Restrict icons on desktop to the primary monitor + Resolves: #1207646 #1046876 #1272881 + +* Thu Apr 28 2016 Carlos Soriano 3.14.3-8 +- Backport fix for jp2 images crashing nautilus +- Apply downstream translations + Resolves: #1271297 #1272881 + +* Tue Oct 6 2015 Carlos Soriano 3.14.3-7 +- Backport two patches from upstream and remove a wrong patch + Resolves: #1254161 #1266477 + +* Wed Sep 23 2015 Ray Strode 3.14.3-6 +- Add more goo to the compat desktop file to prevent it + from getting exposed in control-center + Related: #1259292 + +* Mon Sep 14 2015 David King - 3.14.3-5 +- Refresh patches to fix regression after undo changes (#1252434) + +* Thu Sep 03 2015 David King - 3.14.3-4 +- Backport fix for crash with file bookmarks (#1115338) + +* Wed Jul 15 2015 David King - 3.14.3-3 +- Backport delete keyboard shortcut improvements (#1102849) + +* Fri Jun 26 2015 Ray Strode 3.14.3-2 +- Add backward compatible nautilus.desktop for user defined mime associations + Related: #1174562 1235413 + +* Wed Jun 17 2015 David King - 3.14.3-1 +- Update to 3.14.3 (#1174562) + +* Wed May 06 2015 Ray Strode 3.14.2-2 +- Rebuild against new gnome-desktop3 + Related: #1174562 + +* Thu Mar 19 2015 Richard Hughes - 3.14.2-1 +- Update to 3.14.2 +- Resolves: #1174562 + +* Tue Nov 11 2014 David King - 3.8.2-10 +- Handle desktop link file DND (#1080484) +- Drop symlink renaming patches + +* Wed Oct 08 2014 David King - 3.8.2-9 +- Handle renaming symlinks in the current view (#1059684) + +* Thu Aug 21 2014 Alexander Larsson - 3.8.2-8 +- Fix crash when chowning + Resolves: #1090999 + +* Tue Mar 25 2014 David King - 3.8.2-7 +- Add Requires on gnome-icon-theme-legacy (#1077278) + +* Fri Mar 21 2014 Debarshi Ray - 3.8.2-6 +- Search provider does not show any results + Resolves: #853987 + +* Tue Mar 11 2014 Ray Strode - 3.8.2-5 +- Fix race that prevents icons from showing on desktop + Resolves: #1075054 + +* Fri Jan 24 2014 Daniel Mach - 3.8.2-4 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 3.8.2-3 +- Mass rebuild 2013-12-27 + +* Thu Nov 7 2013 Zeeshan Ali - 3.8.2-2 +- Fix background rendering. + +* Sun Jun 16 2013 Matthias Clasen - 3.8.2-1 +- Update to 3.8.2 + +* Tue Apr 16 2013 Kalev Lember - 3.8.1-1 +- Update to 3.8.1 + +* Tue Mar 26 2013 Kalev Lember - 3.8.0-1 +- Update to 3.8.0 + +* Wed Mar 20 2013 Richard Hughes - 3.7.92-1 +- Update to 3.7.92 + +* Thu Mar 7 2013 Matthias Clasen - 3.7.91-1 +- Update to 3.7.91 + +* Wed Feb 20 2013 Kalev Lember - 3.7.90-2 +- Rebuilt for libgnome-desktop soname bump + +* Tue Feb 19 2013 Richard Hughes - 3.7.90-1 +- Update to 3.7.90 + +* Fri Feb 8 2013 Tomas Bzatek - 3.7.5-2 +- Disable smp build to fix intltool issues + +* Thu Feb 07 2013 Richard Hughes - 3.7.5-1 +- Update to 3.7.5 + +* Sun Jan 27 2013 Kalev Lember - 3.7.4-2 +- Rebuilt for tracker 0.16 ABI + +* Wed Jan 16 2013 Richard Hughes - 3.7.4-1 +- Update to 3.7.4 + +* Fri Dec 21 2012 Kalev Lember - 3.7.3-1 +- Update to 3.7.3 + +* Thu Dec 6 2012 Tomas Bzatek - 3.7.2-2 +- nautilus-devel should require nautilus-extensions + +* Tue Nov 20 2012 Richard Hughes - 3.7.2-1 +- Update to 3.7.2 + +* Fri Nov 09 2012 Kalev Lember - 3.7.1-1 +- Update to 3.7.1 +- Own the gtk-doc directories + +* Mon Oct 15 2012 Cosimo Cecchi - 3.6.1-1 +- Update to 3.6.1 + +* Tue Sep 25 2012 Cosimo Cecchi - 3.6.0-1 +- Update to 3.6.0 + +* Tue Sep 18 2012 Cosimo Cecchi - 3.5.92-1 +- Update to 3.5.92 + +* Tue Sep 04 2012 Cosimo Cecchi - 3.5.91-1 +- Update to 3.5.91 + +* Tue Aug 21 2012 Cosimo Cecchi - 3.5.90-1 +- Update to 3.5.90 + +* Fri Aug 10 2012 Cosimo Cecchi - 3.5.5-1 +- Update to 3.5.5 + +* Fri Jul 27 2012 Fedora Release Engineering - 3.5.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jul 17 2012 Cosimo Cecchi - 3.5.4-2 +- Enable tracker support + +* Tue Jul 17 2012 Richard Hughes - 3.5.4-1 +- Update to 3.5.4 + +* Sat Jul 14 2012 Ville Skyttä - 3.5.3-2 +- Move ldconfig calls from main package to -extensions. + +* Tue Jun 26 2012 Richard Hughes - 3.5.3-1 +- Update to 3.5.3 + +* Thu Jun 07 2012 Richard Hughes - 3.5.2-1 +- Update to 3.5.2 + +* Sat May 05 2012 Kalev Lember - 3.5.1-1 +- Update to 3.5.1 + +* Tue Apr 24 2012 Kalev Lember - 3.4.1-2 +- Silence rpm scriptlet output + +* Mon Apr 16 2012 Richard Hughes - 3.4.1-1 +- Update to 3.4.1 + +* Mon Mar 26 2012 Cosimo Cecchi - 3.4.0-1 +- Update to 3.4.0 + +* Tue Mar 20 2012 Cosimo Cecchi - 3.3.92-1 +- Update to 3.3.92 + +* Tue Mar 06 2012 Cosimo Cecchi - 3.3.91-1 +- Update to 3.3.91 + +* Sun Feb 26 2012 Matthias Clasen - 3.3.90-1 +- Update to 3.3.90 + +* Tue Feb 7 2012 Cosimo Cecchi - 3.3.5-1 +- Update to 3.3.5 + +* Tue Jan 17 2012 Matthias Clasen - 3.3.4-1 +- Update to 3.3.4 + +* Fri Jan 13 2012 Fedora Release Engineering - 3.3.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Dec 20 2011 Matthias Clasen - 3.3.3-1 +- Update to 3.3.3 + +* Wed Nov 2 2011 Matthias Clasen - 3.3.1.1-1 +- Update to 3.3.1.1 + +* Wed Oct 26 2011 Fedora Release Engineering - 3.2.1-2 +- Rebuilt for glibc bug#747377 + +* Tue Oct 18 2011 Cosimo Cecchi - 3.2.1-1 +- Update to 3.2.1 + +* Tue Sep 27 2011 Cosimo Cecchi - 3.2.0-1 +- Update to 3.2.0 + +* Mon Sep 19 2011 Cosimo Cecchi - 3.1.92-1 +- Update to 3.1.92 + +* Wed Aug 31 2011 Matthias Clasen 3.1.90-1 +- Update to 3.1.90 + +* Mon Jul 25 2011 Matthias Clasen 3.1.4-1 +- Update to 3.1.4 + +* Mon Jul 04 2011 Bastien Nocera 3.1.3-1 +- Update to 3.1.3 + +* Tue Jun 14 2011 Cosimo Cecchi - 3.1.2-1 +- Update to 3.1.2 + +* Wed May 11 2011 Matthias Clasen - 3.1.1-1 +- Update to 3.1.1 + +* Mon Apr 25 2011 Matthias Clasen - 3.0.1-1 +- Update to 3.0.1 + +* Mon Apr 04 2011 Cosimo Cecchi - 3.0.0-1 +- Update to 3.0.0 + +* Wed Mar 30 2011 Cosimo Cecchi - 2.91.94-1 +- Update to 2.91.94 + +* Sun Mar 27 2011 Colin Walters - 2.91.93-2 +- Drop --vendor from nautilus.desktop + Vendor prefixes are pointless, and in this case breaks upstream + components trying to reference each other via .desktop file, such + as GNOME Shell having nautilus.desktop in its default favorite + list. + +* Fri Mar 25 2011 Matthias Clasen - 2.91.93-1 +- Update to 2.91.93 + +* Mon Mar 21 2011 Cosimo Cecchi - 2.91.92-1 +- Update to 2.91.92 + +* Mon Mar 07 2011 Cosimo Cecchi 2.91.91-1 +- Update to 2.91.91 + +* Tue Feb 22 2011 Cosimo Cecchi 2.91.90.1-1 +- Update to 2.91.90.1 + +* Mon Feb 21 2011 Cosimo Cecchi 2.91.90-1 +- Update to 2.91.90 + +* Thu Feb 10 2011 Matthias Clasen 2.91.9-4 +- Rebuild against newer gtk + +* Tue Feb 08 2011 Fedora Release Engineering - 2.91.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Feb 7 2011 Cosimo Cecchi - 2.91.9-2 +- Add a patch from upstream for missing bookmark names + +* Fri Feb 4 2011 Cosimo Cecchi - 2.91.9-1 +- Update to 2.91.9 + +* Tue Feb 2 2011 Matthias Clasen - 2.91.8-4 +- Rebuild against new gtk + +* Tue Feb 1 2011 Tomas Bzatek - 2.91.8-3 +- Remove last traces of gconf (#674359) + +* Mon Jan 31 2011 Cosimo Cecchi - 2.91.8-2 +- Update selinux patch + +* Mon Jan 31 2011 Cosimo Cecchi - 2.91.8-1 +- Update to 2.91.8 + +* Wed Jan 12 2011 Matthias Clasen - 2.91.7-2 +- Drop explicit gnome-desktop dependency +- Drop some no-longer-required tweaks + +* Tue Jan 11 2011 Cosimo Cecchi - 2.91.7-1 +- Update to 2.91.7 + +* Fri Jan 7 2011 Matthias Clasen - 2.91.6-1 +- Update to 2.91.6 + +* Fri Dec 3 2010 Matthias Clasen - 2.91.3-2 +- Rebuild against new gtk + +* Mon Nov 29 2010 Cosimo Cecchi - 2.91.3-1 +- Update to 2.91.3 +- Drop unnecessary patches + +* Wed Nov 10 2010 Tomas Bzatek - 2.91.2-1 +- Update to 2.91.2 + +* Mon Nov 1 2010 Matthias Clasen - 2.91.1-1 +- Update to 2.91.1 + +* Wed Oct 6 2010 Matthias Clasen - 2.91.0-1 +- Update to 2.91.0 + +* Wed Sep 29 2010 jkeating - 2.90.1-6.gitf3bbee7 +- Rebuilt for gcc bug 634757 + +* Sat Sep 25 2010 Owen Taylor - 2.90.1-5.gitf3bbee7 +- Bump and rebuild for gtk3 ABI changes + +* Tue Sep 21 2010 Matthias Clasen - 2.90.1-4.gitf3bbee7 +- git snapshot +- Rebuild against newer gobject-introspection + +* Mon Aug 30 2010 Tomas Bzatek - 2.90.1-2 +- Require gsettings-desktop-schemas (#628273) + +* Tue Aug 24 2010 Matthias Clasen - 2.90.1-1 +- Update to 2.31.91 + +* Wed Aug 18 2010 Tomas Bzatek - 2.31.90-1 +- Update to 2.31.90 + +* Thu Aug 12 2010 Tomas Bzatek - 2.31.6-1 +- Update to 2.31.6 + +* Fri Aug 6 2010 Tomas Bzatek - 2.31.5-3.really.2.30.1 +- Revert back (temporarily) to 2.30.1 and mask it as 2.31.5 due to recent gnome3 changes + +* Thu Jul 15 2010 Colin Walters - 2.31.5-2 +- Rebuild with new gobject-introspection + +* Mon Jul 12 2010 Matthias Clasen 2.31.5-1 +- Update to 2.31.5 + +* Mon Jun 28 2010 Matthias Clasen 2.31.4-1 +- Update to 2.31.4 + +* Wed Jun 23 2010 Bastien Nocera 2.31.3-4.20100618git +- Fix libnautilus-extensions pkg-config files + +* Wed Jun 23 2010 Matthias Clasen - 2.31.3-3.20100618git +- Rebuild to get rid of mixed gtk deps + +* Fri Jun 18 2010 Matthias Clasen - 2.31.3-2.20100618git +- git snapshot that builds against GLib 2.25.9 and GTK+ 2.90.3 + +* Tue Jun 8 2010 Matthias Clasen - 2.31.3-1 +- Update to 2.31.3 + +* Mon May 24 2010 Tomas Bzatek - 2.31.2-1 +- Update to 2.31.2 + +* Tue May 4 2010 Tomas Bzatek - 2.31.1-1 +- Update to 2.31.1 + +* Tue May 4 2010 Tomas Bzatek - 2.30.1-3 +- Remove .desktop entry in applications > system tools (#583790) + +* Mon Apr 26 2010 Tomas Bzatek - 2.30.1-2 +- Do not show Unmount when showing Eject/Safe removal + +* Mon Apr 26 2010 Tomas Bzatek - 2.30.1-1 +- Update to 2.30.1 + +* Sat Apr 24 2010 Matthias Clasen - 2.30.0-3 +- Also obsolete eel2-devel (#583722) + +* Tue Apr 13 2010 Seth Vidal - 2.30.0-2 +- fix obsoletes/provides for eel2 to not include pkg name in ver/rel + +* Mon Mar 29 2010 Tomas Bzatek - 2.30.0-1 +- Update to 2.30.0 + +* Mon Mar 15 2010 Tomas Bzatek - 2.29.92.1-1 +- Update to 2.29.92.1 +- Fix eel2 obsoletion + +* Mon Mar 8 2010 Tomas Bzatek - 2.29.92-1 +- Update to 2.29.92 + +* Mon Feb 22 2010 Matthias Clasen - 2.29.91-1 +- Update to 2.29.91 + +* Wed Feb 17 2010 Tomas Bzatek - 2.29.90-2 +- Explicitly require exact nautilus-extensions package (#565802) + +* Tue Feb 9 2010 Tomas Bzatek - 2.29.90-1 +- Update to 2.29.90 + +* Thu Jan 28 2010 Jesse Keating - 2.29.2-2 +- Add a requires to keep nautilus-extensions updated if nautilus gets updated + +* Mon Jan 25 2010 Tomas Bzatek - 2.29.2-1 +- Update to 2.29.2 + +* Sun Jan 17 2010 Matthias Clasen - 2.29.1-2 +- Rebuild + +* Fri Dec 18 2009 Tomas Bzatek - 2.29.1-1 +- Update to 2.29.1 + +* Thu Dec 10 2009 Jon McCann - 2.28.2-3 +- Update the monitor changes patch (gnome #147808) + +* Tue Dec 8 2009 Tomas Bzatek - 2.28.2-2 +- Fix some memory leaks + +* Mon Nov 30 2009 Alexander Larsson - 2.28.2-1 +- Update to 2.28.2 + +* Wed Nov 18 2009 Tomas Bzatek - 2.28.1-4 +- Proper fix for crash in the infopanel (#531826) + +* Mon Nov 9 2009 Matthias Clasen - 2.28.1-3 +- Handle monitor changes when drawing the background (gnome #147808) + +* Mon Nov 2 2009 Tomas Bzatek - 2.28.1-2 +- Don't crash in infopanel on invalid selection (#531826) + +* Wed Oct 21 2009 Tomas Bzatek - 2.28.1-1 +- Update to 2.28.1 + +* Thu Sep 24 2009 Matthias Clasen - 2.28.0-3 +- Avoid lingering menuitems (#518570) + +* Wed Sep 23 2009 Ray Strode 2.28.0-2 +- Fix crossfade + +* Mon Sep 21 2009 Tomas Bzatek - 2.28.0-1 +- Update to 2.28.0 + +* Wed Sep 9 2009 Matthias Clasen - 2.27.92-2 +- Fix desktop files to be valid + +* Mon Sep 7 2009 Tomas Bzatek - 2.27.92-1 +- Update to 2.27.92 + +* Sun Sep 6 2009 Matthias Clasen - 2.27.91-3 +- Fix uninhibiting when long-running operations are over + +* Wed Aug 26 2009 Matthias Clasen - 2.27.91-2 +- Make nautilus-file-management-properties not crash on start + +* Mon Aug 24 2009 Matthias Clasen - 2.27.91-1 +- Update to 2.27.91 + +* Wed Aug 12 2009 Matthias Clasen - 2.27.4-5 +- Turn off autorun for x-content/software + +* Mon Aug 3 2009 Matthias Clasen - 2.27.4-4 +- Show icons for bookmarks and similar in menus + +* Sun Aug 2 2009 Matthias Clasen - 2.27.4-3 +- Drop desktop-backgrounds-basic dep that we've carried for 9 years + without ever making use of it + +* Sat Jul 25 2009 Fedora Release Engineering - 2.27.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Jul 14 2009 Matthias Clasen - 2.27.4-1 +- Update to 2.27.4 + +* Mon Jun 15 2009 Tomas Bzatek - 2.27.2-1 +- Update to 2.27.2 + +* Tue May 5 2009 Tomas Bzatek - 2.27.1-1 +- Update to 2.27.1 + +* Mon Apr 27 2009 Matthias Clasen - 2.26.2-3 +- Don't drop schemas translations from po files anymore + +* Thu Apr 16 2009 Alexander Larsson - 2.26.2-2 +- Fix whitespace on the right in icon view when zooming + +* Mon Apr 13 2009 Alexander Larsson - 2.26.2-1 +- Update to 2.26.2 + +* Mon Apr 6 2009 Tomas Bzatek - 2.26.1-2 +- Fix dragging files via NFS moves instead of copy (#456515) + +* Thu Apr 2 2009 Tomas Bzatek - 2.26.1-1 +- Update to 2.26.1 + +* Mon Mar 16 2009 Tomas Bzatek - 2.26.0-1 +- Update to 2.26.0 + +* Thu Mar 12 2009 Matthias Clasen - 2.25.93-2 +- Avoid respawning in a loop when not showing the desktop (#485375) + +* Wed Mar 11 2009 Tomas Bzatek - 2.25.93-1 +- Update to 2.25.93 + +* Mon Mar 2 2009 Tomas Bzatek - 2.25.92-1 +- Update to 2.25.92 + +* Wed Feb 25 2009 Fedora Release Engineering - 2.25.91-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Feb 19 2009 Tomas Bzatek - 2.25.91-2 +- Workaround for broken gcc optimization (#486088) + +* Mon Feb 16 2009 Tomas Bzatek - 2.25.91-1 +- Update to 2.25.91 + +* Mon Feb 2 2009 Tomas Bzatek - 2.25.4-1 +- Update to 2.25.4 + +* Tue Jan 20 2009 Matthias Clasen - 2.25.3-2 +- Reenable the translation size reduction + +* Tue Jan 20 2009 Tomas Bzatek - 2.25.3-1 +- Update to 2.25.3 + +* Mon Jan 19 2009 Ray Strode - 2.25.2-7 +- Update fade patch to work with updated gnome-desktop api +- Fix fade start pixmap + +* Wed Jan 7 2009 Ray Strode - 2.25.2-6 +- Don't crash when closing spatial window very quickly after + opening it (gnome bug 552859) + +* Thu Dec 18 2008 Matthias Clasen - 2.25.2-5 +- Fix spec + +* Thu Dec 18 2008 - Ray Strode - 2.25.2-4 +- Add eel crossfade patch + +* Wed Dec 17 2008 - Bastien Nocera - 2.25.2-3 +- Rebuild for new libgnome-desktop + +* Tue Dec 16 2008 Matthias Clasen - 2.25.2-2 +- Drop the eel2 Obsoletes temporarily to give people some time + to port away + +* Tue Dec 16 2008 Matthias Clasen - 2.25.2-1 +- Update to 2.25.2 +- Clean up Requires +- Obsolete eel2 +- Drop hard dependency on gvfs backends. + These are pulled in by comps, anyway + +* Fri Dec 5 2008 Matthias Clasen - 2.25.1-5 +- Obsolete gnome-volume-manager + +* Fri Dec 5 2008 Tomas Bzatek - 2.25.1-4 +- Properly open new windows after long mount operation +- Fix callback connection to the GtkMountOperation dialog + +* Thu Dec 4 2008 Tomas Bzatek - 2.25.1-3 +- Fix BuildRequires + +* Thu Dec 4 2008 Tomas Bzatek - 2.25.1-2 +- Rediff the XDS patch + +* Tue Dec 2 2008 Tomas Bzatek - 2.25.1-1 +- Update to 2.25.1 + +* Wed Nov 26 2008 Tomas Bzatek - 2.24.2-1 +- Update to 2.24.2 + +* Fri Nov 21 2008 Matthias Clasen - 2.24.1-5 +- Better URL +- Tweak %%description + +* Thu Nov 13 2008 Matthias Clasen - 2.24.1-4 +- Rebuild + +* Mon Oct 27 2008 Tomas Bzatek - 2.24.1-3 +- Updated XDS support in tree view patch (sync with gnomebz #171655) + +* Fri Oct 24 2008 Alexander Larsson - 2.24.1-2 +- Manually check for fallback file icon since we're not + always returning that from gio anymore (from upstream) + +* Mon Oct 20 2008 Tomas Bzatek - 2.24.1-1 +- Update to 2.24.1 + +* Tue Oct 14 2008 Matthias Clasen - 2.24.0-3 +- Remove debug flags + +* Thu Sep 25 2008 Matthias Clasen - 2.24.0-2 +- Save some space + +* Sun Sep 21 2008 Matthias Clasen - 2.24.0-1 +- Update to 2.24.0 + +* Sat Sep 20 2008 Matthias Clasen - 2.23.92-3 +- Plug some memory leaks + +* Fri Sep 19 2008 Matthias Clasen - 2.23.92-2 +- Plug some memory leaks + +* Mon Sep 8 2008 Matthias Clasen - 2.23.92-1 +- Update to 2.23.92 + +* Tue Sep 02 2008 Tomas Bzatek - 2.23.91-1 +- Update to 2.23.91 + +* Sat Aug 30 2008 Matthias Clasen - 2.23.90-4 +- Plug a few small memory leaks + +* Thu Aug 28 2008 Matthias Clasen - 2.23.90-3 +- Pull in split-off gvfs backends + +* Wed Aug 27 2008 - Bastien Nocera - 2.23.90-2 +- Fix typo in the schemas file + +* Sat Aug 23 2008 Matthias Clasen - 2.23.90-1 +- Update to 2.23.90 + +* Mon Aug 4 2008 Tomas Bzatek - 2.23.6.1-1 +- Update to 2.23.6.1 +- Dropped upstreamed patches + +* Mon Aug 4 2008 Tomas Bzatek - 2.23.6-1 +- Update to 2.23.6 + +* Sun Jul 27 2008 Matthias Clasen - 2.23.5-3 +- More icon name fixes + +* Sun Jul 27 2008 Matthias Clasen - 2.23.5-2 +- Use standard icon names + +* Tue Jul 22 2008 Tomas Bzatek - 2.23.5.1-1 +- Update to 2.23.5.1 + +* Tue Jul 22 2008 Matthias Clasen - 2.23.5-1 +- Update to 2.23.5 + +* Tue Jun 17 2008 Tomas Bzatek - 2.23.4-1 +- Update to 2.23.4 + +* Thu Jun 12 2008 Tomas Bzatek - 2.23.3-2 +- Fix DnD segfaults (#450416, #450449) + +* Wed Jun 4 2008 Tomas Bzatek - 2.23.3-1 +- Update to 2.23.3 + +* Fri May 30 2008 Tomas Bzatek - 2.23.2-3 +- Add DnD support to drop files onto archive files with help + of file-roller (gnomebz #377157) +- Add fix preventing crash on bad GFileInfos (gnomebz #519743) + +* Fri May 16 2008 Tomas Bzatek - 2.23.2-2 +- Add treeview XDS drag&drop support (#446760) + +* Tue May 13 2008 Tomas Bzatek - 2.23.2-1 +- Update to 2.23.2 + +* Fri May 2 2008 David Zeuthen - 2.23.1-4 +- Default to "Ask what to do" for all actions (#444639) + +* Fri May 2 2008 Tomas Bzatek - 2.23.1-3 +- Mask file moving to nautilus-cd-burner window as copy operation (#443944) +- Don't allow recursive move/copy into itself (gnomebz #530720) + +* Thu Apr 24 2008 Tomas Bzatek - 2.23.1-2 +- Add SELinux patch (gnomebz #529694) + +* Wed Apr 23 2008 Tomas Bzatek - 2.23.1-1 +- Update to 2.23.1 + +* Thu Apr 17 2008 Matthias Clasen - 2.22.2-5 +- Make "Open Folder" work as expected for media handling + +* Thu Apr 17 2008 David Zeuthen - 2.22.2-4 +- Put X-Gnome-Vfs-System=gio into desktop files (See #442835) + +* Wed Apr 16 2008 David Zeuthen - 2.22.2-3 +- Revert Fedora livecd mount (fix is in latest gvfs packages) and + add a patch to avoid trying to autorun mounts that are mounted + from outside Nautilus (#442189) + +* Fri Apr 11 2008 Tomas Bzatek - 2.22.2-2 +- Hide Fedora livecd mount (#439166) + +* Mon Apr 7 2008 Matthias Clasen - 2.22.2-1 +- Update to 2.22.2 + +* Sun Apr 6 2008 Matthias Clasen - 2.22.1-6 +- Backport a patch from upstream svn thats needed for file-roller + +* Fri Apr 4 2008 Matthias Clasen - 2.22.1-5 +- Fix beagle support some more + +* Thu Apr 3 2008 Tomas Bzatek - 2.22.1-4 +- Fix SELinux attributes display issue (#439686) + +* Wed Apr 2 2008 Matthias Clasen - 2.22.1-3 +- Fix the build to include tracker and beagle support again + +* Mon Mar 31 2008 Ray Strode - 2.22.1-2 +- Over the releases we've accumulated default.png, default-wide.png default-5_4.png + and default.jpg. We haven't been able to drop them because it would leave some + users with white backgrounds on upgrade. This patch just falls back to the + default image if the user's background doesn't exist. + + +* Fri Mar 28 2008 Tomas Bzatek - 2.22.1-1 +- Update to 2.22.1 + +* Thu Mar 13 2008 Tomas Bzatek - 2.22.0-2 +- Don't create application/x-ext- types for known mimetypes (patch from head) +- Fix a crash in the Properties dialog while changing owner (patch from head) + +* Mon Mar 10 2008 Matthias Clasen - 2.22.0-1 +- Update to 2.22.0 + +* Tue Feb 26 2008 Tomas Bzatek - 2.21.92-2 +- Change libbeagle .so name for libbeagle-0.3.0 in nautilus-2.21.1-dynamic-search-r2.patch (#434722) + +* Tue Feb 26 2008 Tomas Bzatek - 2.21.92-1 +- Update to 2.21.92 + +* Tue Feb 12 2008 Matthias Clasen - 2.21.91-1 +- Update to 2.21.91 + +* Tue Jan 29 2008 Matthias Clasen - 2.21.90-1 +- Update to 2.21.90 + +* Mon Jan 21 2008 Matthias Clasen - 2.21.6-1 +- Update to 2.21.6 + +* Mon Jan 14 2008 Matthias Clasen - 2.21.5-1 +- Update to 2.21.5 + +* Tue Jan 8 2008 Matthias Clasen - 2.21.2-1 +- Update to 2.21.2 + +* Sun Dec 23 2007 Matthias Clasen - 2.21.1-2 +- Fix extensiondir + +* Fri Dec 21 2007 Matthias Clasen - 2.21.1-1 +- Upodate to 2.21.1 + +* Wed Dec 19 2007 - Bastien Nocera - 2.20.0-7 +- Update audio preview patch to check for aliases (#381401) + +* Tue Oct 30 2007 - Bastien Nocera - 2.20.0-6 +- Fix audio preview command-line to use decodebin so playbin doesn't + pop up a window for videos detected as audio + +* Tue Oct 16 2007 - Bastien Nocera - 2.20.0-5 +- Add patch from upstream to get audio preview working again + (#332251) + +* Wed Oct 3 2007 Matthias Clasen - 2.20.0-4 +- Move /usr/lib/nautilus/extensions-1.0 to the extensions package + +* Tue Oct 2 2007 Matthias Clasen - 2.20.0-3 +- Fix a crash with small fonts (#242350) + +* Tue Oct 2 2007 Alexander Larsson - 2.20.0-1 +- Backport fixes for async thumbnail loading from svn + +* Fri Sep 28 2007 Ray Strode - 2.20.0-2 +- drop redhat-artwork dep. Alex says we don't need it anymore + +* Tue Sep 18 2007 Matthias Clasen - 2.20.0-1 +- Update to 2.20.0 + +* Mon Sep 3 2007 Matthias Clasen - 2.19.91-1 +- Update to 2.19.91 + +* Mon Aug 13 2007 Matthias Clasen - 2.19.90-1 +- Update to 2.19.90 + +* Fri Aug 10 2007 Matthias Clasen - 2.19.6-3 +- Bump gnome-vfs requirement (#251306) + +* Fri Aug 3 2007 Matthias Clasen - 2.19.6-2 +- Update license field + +* Mon Jul 30 2007 Matthias Clasen - 2.19.6-1 +- Update to 2.19.6 + +* Wed Jul 25 2007 Jesse Keating - 2.19.5-3 +- Rebuild for RH #249435 + +* Mon Jul 23 2007 Matthias Clasen - 2.19.5-2 +- Port to new GTK+ tooltips API + +* Tue Jul 10 2007 Matthias Clasen - 2.19.5-1 +- Update to 2.19.5 + +* Fri Jul 6 2007 Matthias Clasen - 2.19.4-2 +- Fix directory ownership issues + +* Mon Jun 18 2007 Matthias Clasen - 2.19.4-1 +- Update to 2.19.4 + +* Tue Jun 5 2007 Matthias Clasen - 2.19.3-1 +- Update to 2.19.3 + +* Sat May 19 2007 Matthias Clasen - 2.19.2-1 +- Update to 2.19.2 + +* Wed Apr 11 2007 Alexander Larsson - 2.18.1-2 +- Fix memleak (#235696) + +* Wed Apr 11 2007 Alexander Larsson - 2.18.1-1 +- Update to 2.18.1 + +* Mon Mar 26 2007 Matthias Clasen - 2.18.0.1-2 +- Update icon caches (#234020) + +* Mon Mar 12 2007 Alexander Larsson - 2.18.0.1-1 +- Update to 2.18.0.1 + +* Tue Mar 6 2007 Alexander Larsson - 2.17.92-3 +- Update xdg-user-dirs patch, now handle renaming desktop dir + +* Thu Mar 1 2007 Alexander Larsson - 2.17.92-2 +- Add xdg-user-dirs patch + +* Tue Feb 27 2007 Matthias Clasen - 2.17.92-1 +- Update to 2.17.92 + +* Tue Feb 13 2007 Matthias Clasen - 2.17.91-1 +- Update to 2.17.91 + +* Wed Feb 7 2007 Matthias Clasen - 2.17.90-4 +- Add DesktopSettings category to nautilus-file-management-properties.desktop + +* Tue Feb 6 2007 Alexander Larsson - 2.17.90-3 +- update tracker dynamic search patch to new .so name + +* Tue Jan 23 2007 Alexander Larsson - 2.17.90-2 +- Fix gnome bug #362302 in selinux patch + +* Mon Jan 22 2007 Matthias Clasen - 2.17.90-1 +- Update to 2.17.90 + +* Tue Dec 19 2006 Matthias Clasen - 2.17.1-1 +- Update to 2.17.1 + +* Wed Nov 22 2006 Alexander Larsson - 2.16.2-7 +- Look for beagle before tracker, because tracker autostarts + This lets us support having both installed at the same time. +- Remove buildreqs for beagle, as they are not necessary with + the dynamic work. + +* Tue Nov 14 2006 Matthias Clasen - 2.16.2-6 +- Detect tracker dynamically, too + +* Mon Nov 13 2006 Alexander Larsson - 2.16.2-5.fc7 +- Fix commonly reported NautilusDirectory crash + +* Wed Nov 8 2006 Alexander Larsson - 2.16.2-4.fc7 +- Revert upstream icon placement patch as it seems broken + +* Tue Nov 7 2006 Alexander Larsson - 2.16.2-2.fc7 +- Update to 2.16.2 + +* Sat Oct 21 2006 Matthias Clasen - 2.16.1-1 +- Update to 2.16.1 + +* Wed Oct 18 2006 Matthias Clasen - 2.16.0-6 +- Fix scripts according to the packaging guidelines +- Require GConf2 for the scripts +- Require pkgconfig for the -devel package + +* Sun Oct 01 2006 Jesse Keating - 2.16.0-5 +- rebuilt for unwind info generation, broken in gcc-4.1.1-21 + +* Tue Sep 19 2006 Alexander Larsson - 2.16.0-4 +- Support changing selinux contexts (#204030) + +* Thu Sep 14 2006 Alexander Larsson - 2.16.0-3 +- Fix crash when opening custom icon dialog (#205352) + +* Tue Sep 5 2006 Matthias Clasen - 2.16.0-2 +- Add a %%preun script (#205260) + +* Mon Sep 4 2006 Alexander Larsson - 2.16.0-1 +- Update to 2.16.0 + +* Fri Aug 25 2006 Alexander Larsson - 2.15.92.1-2 +- Omit self check code in build + +* Tue Aug 22 2006 Alexander Larsson - 2.15.92.1-1 +- update to 2.15.92.1 + +* Mon Aug 21 2006 Matthias Clasen - 2.15.92-1.fc6 +- Update to 2.15.92 + +* Sat Aug 12 2006 Matthias Clasen - 2.15.91-2.fc6 +- Don't Provide/Obsolete nautilus-devel from the main package (#202322) + +* Thu Aug 10 2006 Alexander Larsson - 2.15.91-1.fc6 +- Update to 2.15.91 +- Split package into devel and extensions (#201967) + +* Thu Aug 3 2006 Matthias Clasen - 2.15.90-1.fc6 +- Update to 2.15.90 + +* Tue Jul 18 2006 Matthias Clasen - 2.15.4-3 +- Spec file cleanups + +* Wed Jul 12 2006 Matthias Clasen - 2.15.4-2 +- Don't require nautilus-cd-burner, to avoid a + BuildRequires-Requires loop + +* Wed Jul 12 2006 Matthias Clasen - 2.15.4-1 +- Update to 2.15.4 + +* Wed Jul 12 2006 Jesse Keating - 2.15.2-1.1 +- rebuild + +* Tue Jun 13 2006 Matthias Clasen - 2.15.2-1 +- Update to 2.15.1 + +* Sun May 21 2006 Matthias Clasen - 2.15.1-2 +- Add missing BuildRequires (#129184) + +* Wed May 17 2006 Matthias Clasen - 2.15.1-1 +- Update to 2.15.1 + +* Fri May 12 2006 Matthias Clasen - 2.14.1-3 +- Close the about dialog + +* Tue Apr 11 2006 Matthias Clasen - 2.14.1-2 +- Update to 2.14.1 + +* Mon Mar 13 2006 Matthias Clasen - 2.14.0-1 +- Update to 2.14.0 + +* Mon Mar 6 2006 Matthias Clasen - 2.13.92-2 +- Reinstate the format patch which was accidentally dropped + +* Mon Feb 27 2006 Matthias Clasen - 2.13.92-1 +- Update to 2.13.92 + +* Mon Feb 13 2006 Matthias Clasen - 2.13.91-1 +- Update to 2.13.91 + +* Fri Feb 10 2006 Jesse Keating - 2.13.90-2.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 2.13.90-2.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Mon Feb 6 2006 Matthias Clasen - 2.13.90-2 +- Avoid delays in rendering the background + +* Tue Jan 31 2006 Matthias Clasen - 2.13.90-1 +- Update to 2.13.90 + +* Tue Jan 17 2006 Matthias Clasen - 2.13.4-1 +- Update to 2.13.4 + +* Mon Jan 9 2006 Alexander Larsson - 2.13.3-2 +- Buildrequire libbeagle + +* Tue Dec 13 2005 Alexander Larsson 2.13.3-1 +- Update to 2.13.3 + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Fri Dec 2 2005 Matthias Clasen 2.13.2-1 +- Update to 2.13.2 +- Update patches + +* Tue Nov 1 2005 Alexander Larsson - 2.12.1-6 +- Switch XFree86-devel buildrequirement to libX11-devel + +* Sat Oct 28 2005 Matthias Clasen 2.12.1-5 +- Implement icon stretching keynav +- Support formatting non-floppy devices + +* Sat Oct 22 2005 Matthias Clasen 2.12.1-4 +- Improve icon stretching ui + +* Fri Oct 21 2005 Matthias Clasen 2.12.1-3 +- Only show the "Format menu item if gfloppy is present + +* Fri Oct 21 2005 Matthias Clasen 2.12.1-2 +- Add a "Format" context menu item to the floppy in "Computer" + +* Thu Oct 6 2005 Matthias Clasen 2.12.1-1 +- Update to 2.12.1 + +* Wed Sep 7 2005 Matthias Clasen 2.12.0-1 +- Update to 2.12.0 + +* Tue Aug 16 2005 Matthias Clasen +- New upstream release + +* Wed Aug 3 2005 Matthias Clasen 2.11.90-1 +- New upstream release + +* Mon Jul 11 2005 Matthias Clasen 2.11.3-1 +- Update to 2.11.3 + +* Wed May 11 2005 David Zeuthen 2.10.0-4 +- Fix default font for zh_TW (#154185) + +* Sun Apr 3 2005 David Zeuthen 2.10.0-3 +- Include patches for desktop background memory saving (GNOME bug #169347) +- Obsoletes: nautilus-media (#153223) + +* Mon Mar 28 2005 Matthias Clasen 2.10.0-2 +- Rebuild against newer libexif + +* Mon Mar 21 2005 David Zeuthen 2.10.0-1 +- Update to latest upstream version; tweak requires + +* Thu Mar 3 2005 Alex Larsson 2.9.91-2 +- Rebuild + +* Fri Feb 11 2005 Matthias Clasen - 2.9.91-1 +- Update to 2.9.91 + +* Tue Nov 9 2004 Marco Pesenti Gritti - 2.8.1-5 +- Remove eog dependency. The bonobo component is no more used. + +* Mon Oct 18 2004 Marco Pesenti Gritti - 2.8.1-4 +- #135824 Fix throbber position + +* Fri Oct 15 2004 Alexander Larsson - 2.8.1-3 +- Slightly less bad error dialog when there is no handler for a file. + Not ideal, but this change doesn't change any strings. + +* Tue Oct 12 2004 Alexander Larsson - 2.8.1-2 +- Fix open with menu on mime mismatch +- Create desktop links ending with .desktop (#125104) +- Remove old cruft from specfile + +* Mon Oct 11 2004 Alexander Larsson - 2.8.1-1 +- update to 2.8.1 + +* Fri Oct 8 2004 Alexander Larsson - 2.8.0-3 +- Backport more fixes from cvs + +* Mon Oct 4 2004 Alexander Larsson - 2.8.0-2 +- Backport various bugfixes from HEAD + +* Mon Sep 13 2004 Alexander Larsson - 2.8.0-1 +- Update to 2.8.0 + +* Fri Sep 10 2004 Alexander Larsson - 2.7.92-3 +- Don't require eject on s390(x), since there is none (#132228) + +* Tue Sep 7 2004 Alexander Larsson - 2.7.92-2 +- Add patch to fix desktop keynav (#131894) + +* Tue Aug 31 2004 Alex Larsson 2.7.92-1 +- update to 2.7.92 + +* Thu Aug 26 2004 Alexander Larsson - 2.7.4-3 +- Added requires eject +- Depend on gnome-vfs2-smb instead of -extras + +* Tue Aug 24 2004 Alexander Larsson - 2.7.4-2 +- backport cvs fixes, including default view fix + +* Thu Aug 19 2004 Alex Larsson 2.7.4-1 +- update to 2.7.4 + +* Fri Aug 6 2004 Ray Strode 2.7.2-1 +- update to 2.7.2 + +* Tue Aug 3 2004 Matthias Clasen 2.6.0-7 +- rebuilt + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Fri May 21 2004 Matthias Clasen 2.6.0-5 +- rebuild + +* Wed Apr 14 2004 Alexander Larsson 2.6.0-4 +- update cvs backport, now handles kde trash dir better + +* Wed Apr 14 2004 Alexander Larsson 2.6.0-3 +- add cvs backport + +* Wed Apr 7 2004 Alex Larsson 2.6.0-2 +- Make network servers go to network:// again + +* Thu Apr 1 2004 Alex Larsson 2.6.0-1 +- update to 2.6.0 + +* Tue Mar 16 2004 Mike A. Harrisn 2.5.91-2 +- Changed BuildRequires: XFree86-libs >= 4.2.99 to BuildRequires: XFree86-devel +- Fixed BuildRoot to use _tmppath instead of /var/tmp + +* Mon Mar 15 2004 Alex Larsson 2.5.91-1 +- update to 2.5.91 + +* Mon Mar 8 2004 Alexander Larsson 2.5.90-1 +- update to 2.5.90 + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Wed Feb 25 2004 Alexander Larsson +- update libgnomeui required version to 2.5.3 (#116229) + +* Tue Feb 24 2004 Alexander Larsson 2.5.8-1 +- update to 2.5.8 + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Alexander Larsson 2.5.7-1 +- update to 2.5.7 + +* Fri Jan 30 2004 Alexander Larsson 2.5.6-1 +- update to 2.5.6 + +* Tue Jan 27 2004 Alexander Larsson 2.5.5-1 +- update to 2.5.5 + +* Tue Oct 28 2003 Than Ngo 2.4.0-7 +- fix start-here desktop file + +* Mon Oct 27 2003 Than Ngo 2.4.0-6 +- rebuild against new librsvg2 + +* Fri Oct 3 2003 Alexander Larsson 2.4.0-5 +- Update cvs backport, now have the better desktop icon layout + +* Mon Sep 29 2003 Alexander Larsson 2.4.0-4 +- Update cvs backport, fixes #105869 + +* Fri Sep 19 2003 Alexander Larsson 2.4.0-3 +- Backport bugfixes from the gnome-2-4 branch + +* Tue Sep 16 2003 Alexander Larsson 2.4.0-2 +- Add patch that fixes crash when deleting in listview + +* Tue Sep 9 2003 Alexander Larsson 2.4.0-1 +- 2.4.0 + +* Thu Sep 4 2003 Alexander Larsson 2.3.90-2 +- Add desktop icons patch + +* Tue Sep 2 2003 Alexander Larsson 2.3.90-1 +- update to 2.3.90 + +* Tue Aug 26 2003 Alexander Larsson 2.3.9-1 +- update +- Add patch to ignore kde desktop links +- Re-enable kdesktop detection hack. + kde doesn't seem to support the manager selection yet + +* Wed Aug 20 2003 Alexander Larsson 2.3.8-2 +- don't require fontilus + +* Mon Aug 18 2003 Alexander Larsson 2.3.8-1 +- update to gnome 2.3 + +* Wed Aug 6 2003 Elliot Lee 2.2.4-5 +- Fix libtool + +* Tue Jul 8 2003 Alexander Larsson 2.2.4-4.E +- Rebuild + +* Tue Jul 8 2003 Alexander Larsson 2.2.4-4 +- Backport fixes from cvs +- Change some default configurations + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Tue May 27 2003 Alexander Larsson 2.2.4-2 +- Add performance increase backport +- Add desktop manager selection backport + +* Mon May 19 2003 Alexander Larsson 2.2.4-1 +- update to 2.2.4 + +* Tue May 6 2003 Alexander Larsson 2.2.3-2 +- Fix scrollkeeper pre-requires + +* Mon Mar 31 2003 Alexander Larsson 2.2.3-1 +- Update to 2.2.3 + +* Tue Feb 25 2003 Alexander Larsson 2.2.1-5 +- Change the default new window size to fit in 800x600 (#85037) + +* Thu Feb 20 2003 Alexander Larsson +- Require gnome-vfs2-extras, since network menu item uses it (#84145) + +* Tue Feb 18 2003 Alexander Larsson +- Update to the latest bugfixes from cvs. +- Fixes #84291 for nautilus, context menu duplication and some other small bugs. + +* Thu Feb 13 2003 Alexander Larsson 2.2.1-2 +- Add a patch to fix the forkbomb-under-kde bug (#81520) +- Add a patch to fix thumbnail memory leak +- require libXft.so.2 instead of Xft, since that changed in the XFree86 package + +* Tue Feb 11 2003 Alexander Larsson 2.2.1-1 +- 2.2.1, lots of bugfixes + +* Fri Jan 31 2003 Alexander Larsson 2.2.0.2-2 +- remove nautilus-server-connect since it broke without editable vfolders + +* Fri Jan 31 2003 Alexander Larsson 2.2.0.2-1 +- Update to 2.2.0.2, fixes bg crasher +- parallelize build +- Added patch from cvs that fixes password hang w/ smb + +* Thu Jan 23 2003 Alexander Larsson 2.2.0.1-1 +- Update to 2.2.0.1 + +* Wed Jan 22 2003 Tim Powers 2.2.0-2 +- rebuilt + +* Tue Jan 21 2003 Alexander Larsson 2.2.0-1 +- update to 2.2.0 + +* Fri Jan 17 2003 Alexander Larsson 2.1.91-8 +- Add requirement on fontilus and nautilus-cd-burner to get them + on an upgrade. + +* Fri Jan 17 2003 Alexander Larsson 2.1.91-7 +- Added patch to enable the look for kde desktop hack +- Removed patches that were fixed upstream + +* Fri Jan 17 2003 Alexander Larsson 2.1.91-6 +- Removed the requirement of nautilus-cd-burner, since + that is now on by default in comps + +* Thu Jan 16 2003 Alexander Larsson 2.1.91-5 +- Require(post,postun) scrollkeeper (#67340) +- Add dot to end of summary + +* Tue Jan 14 2003 Havoc Pennington 2.1.91-4 +- use system-group.png not network-server.png for "Network Servers" + +* Tue Jan 14 2003 Alexander Larsson 2.1.91-3 +- Correct filename in last change + +* Tue Jan 14 2003 Alexander Larsson 2.1.91-2 +- change the network menu item to go to smb: + +* Tue Jan 14 2003 Alexander Larsson 2.1.91-1 +- Update to 2.1.91 +- Updated URL + +* Tue Jan 14 2003 Havoc Pennington +- perl-munge the icon names in a couple desktop files + to find redhat-network-server.png and redhat-file-manager.png. + Upstream icon names here were weird and seem broken. + +* Thu Jan 9 2003 Alexander Larsson +- 2.1.6 +- Removed mp3 stripping script. Thats gone upstream now. + +* Wed Dec 18 2002 Alexander Larsson 2.1.5-2 +- Add cdburn patch. +- Remove nautilus-1.1.19-starthere-hang-hackaround.patch +- Require nautilus-cd-burner + +* Mon Dec 16 2002 Alexander Larsson 2.1.5-1 +- Update to 2.1.5. Require gnome-icon-theme >= 0.1.5, gnome-vfs >= 2.1.5 + +* Tue Dec 3 2002 Havoc Pennington +- add explicit startup-notification dependency because build system is + dumb +- 2.1.3 + +* Wed Nov 13 2002 Havoc Pennington +- 2.1.2 + +* Thu Oct 10 2002 Havoc Pennington +- 2.0.7 +- remove patches that are upstream + +* Tue Sep 3 2002 Alexander Larsson 2.0.6-6 +- Add badhack to make weblinks on desktop work + +* Mon Sep 2 2002 Havoc Pennington +- fix #70667 assertion failures +- fix triple click patch + +* Mon Sep 2 2002 Jonathan Blandford +- don't activate on double click + +* Sat Aug 31 2002 Havoc Pennington +- put button press mask in triple-click patch, maybe it will work +- remove html-hack patch as it does nothing useful + +* Sat Aug 31 2002 Havoc Pennington +- require newer redhat-artwork, -menus, eel2, gnome-vfs2 to avoid + bogus bug reports +- add hack for HTML mime type handling in a web browser, not + nautilus + +* Thu Aug 29 2002 Alexander Larsson +- Updated to 2.0.6. Removed the patches I put upstream. +- Added patch that fixes #72410 + +* Wed Aug 28 2002 Owen Taylor +- Add a simple patch so that redhat-config-packages can disable + the new window behavior for mounted CDs behavior. + +* Wed Aug 28 2002 Alexander Larsson 2.0.5-4 +- Add patch to fix bug #70667 + +* Sun Aug 25 2002 Havoc Pennington +- remove mp3 + +* Fri Aug 23 2002 Havoc Pennington +- ignore the "add_to_session" preference as it only broke stuff +- pad the left margin a bit to cope with poor word wrapping + +* Fri Aug 23 2002 Alexander Larsson 2.0.5-1 +- Update to 2.0.5, remove topleft icon patch + +* Thu Aug 15 2002 Alexander Larsson 2.0.4-2 +- Add patch to fix the bug where desktop icons get + stuck in the top left corner on startup + +* Wed Aug 14 2002 Alexander Larsson 2.0.4-1 +- 2.0.4 + +* Tue Aug 13 2002 Havoc Pennington +- obsolete nautilus-mozilla < 2.0 #69839 + +* Mon Aug 12 2002 Havoc Pennington +- add rhconfig patch to Bluecurve theme and disable sidebar by default + +* Wed Aug 7 2002 Havoc Pennington +- drop start here files, require redhat-menus that has them + +* Tue Aug 6 2002 Havoc Pennington +- 2.0.3 + +* Sat Jul 27 2002 Havoc Pennington +- build for new eel2, gail + +* Wed Jul 24 2002 Havoc Pennington +- and add the libexec components, mumble + +* Wed Jul 24 2002 Havoc Pennington +- put the components in the file list, were moved upstream + +* Tue Jul 23 2002 Havoc Pennington +- 2.0.1 + +* Thu Jun 27 2002 Owen Taylor +- Relibtoolize to fix relink problems for solib components +- Add LANG=en_US to %%makeinstall as well +- Back out previous change, force locale to en_US to prevent UTF-8 problems +- Add workaround for intltool-merge bug on ia64 + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Sun Jun 16 2002 Havoc Pennington +- 2.0.0 +- use desktop-file-install +- require desktop-backgrounds-basic + +* Wed Jun 12 2002 Havoc Pennington +- add wacky hack in hopes of fixing the hang-on-login thing + +* Sat Jun 8 2002 Havoc Pennington +- add build requires on new gail +- rebuild to try to lose broken libgailutil.so.13 dependency + +* Sat Jun 08 2002 Havoc Pennington +- rebuild in different environment + +* Wed Jun 5 2002 Havoc Pennington +- 1.1.19 + +* Fri May 31 2002 Havoc Pennington +- rebuild in different environment + +* Thu May 30 2002 Havoc Pennington +- really remove nautilus-devel if we are going to obsolete it +- don't require hwbrowser + +* Sun May 26 2002 Tim Powers +- automated rebuild + +* Tue May 21 2002 Havoc Pennington +- rebuild in different environment + +* Tue May 21 2002 Havoc Pennington +- 1.1.17 + +* Fri May 3 2002 Havoc Pennington +- 1.1.14 + +* Thu Apr 25 2002 Havoc Pennington +- require eog +- obsolete nautilus-devel +- fix name of schemas file in post + +* Mon Apr 22 2002 Alex Larsson +- Update to 1.1.13 + +* Fri Apr 19 2002 Havoc Pennington +- put tree view in file list + +* Thu Apr 18 2002 Havoc Pennington +- nautilus for gnome 2 +- clean up the spec file and file list a bit + +* Mon Apr 15 2002 Havoc Pennington +- merge translations + +* Thu Apr 4 2002 Alex Larsson +- Add patch to fix trash crash + +* Mon Apr 1 2002 Havoc Pennington +- fix for metadata tmp race +- backport thumbnail speed fix and thumbnail inf. loop fix + +* Mon Mar 25 2002 Havoc Pennington +- add some fixes from CVS version, including one for #61819 and a couple segfaults + +* Wed Mar 20 2002 Havoc Pennington +- fix thumbnails for files with future timestamp, #56862 + +* Mon Mar 11 2002 Havoc Pennington +- buildrequires intltool #60633 +- apply Alex's pixbuf cache patch to save a few megs #60581 + +* Wed Feb 27 2002 Havoc Pennington +- drop Milan-specific features, including png10 and ac25 patches +- copy in 1.0.5 help component to avoid large risky patch +- remove .la files +- drop mozilla from ia64 again +- remove oaf file from nautilus-mozilla that was also in the base + package + +* Mon Jan 28 2002 Bill Nottingham +- enable mozilla support on ia64 + +* Fri Dec 28 2001 Christopher Blizzard +- require Mozilla 0.9.7 +- Add patch that puts mozilla profile startup before embedding is initialized + +* Tue Nov 20 2001 Havoc Pennington +- 1.0.6, require Mozilla 0.9.6 + +* Tue Oct 23 2001 Alex Larsson +- Update to 1.0.5 + +* Thu Sep 6 2001 Owen Taylor +- Fix handling of GnomeVFSFileInfo structure (#53315) + +* Wed Sep 5 2001 Owen Taylor +- Change handling of names on unmount to fix #52325 + +* Tue Sep 4 2001 Havoc Pennington +- put nautilus-help.desktop in file list; #53109 + +* Fri Aug 31 2001 Havoc Pennington +- Add po files from sources.redhat.com + +* Mon Aug 27 2001 Havoc Pennington +- Add po files from sources.redhat.com + +* Thu Aug 23 2001 Alex Larsson 1.0.4-38 +- Added patch to fix the .directory issuer + +* Thu Aug 23 2001 Havoc Pennington +- I screwed up the build yesterday, so it didn't actually contain the + fixes mentioned. This build should contain them. + +* Wed Aug 22 2001 Havoc Pennington +- fix bug causing 32000 stats or so in large directories, + should speed things up somewhat +- fix #52104 via gruesome kdesktop-detection hack and setting + window type hint on our desktop window +- fix so Start Here icon displays in sidebar +- don't load non-local .desktop files + +* Mon Aug 20 2001 Havoc Pennington +- make Programs icon into a link, to match the other .desktop files +- own various directories #51164 +- web page titles in Japanese, #51709 +- tree defaults to only directories #51850 + +* Wed Aug 15 2001 Havoc Pennington +- make start here icon work again +- kill some warning spew, #51661 +- cache getpwnam() results to speed things up a bit + +* Tue Aug 14 2001 Owen Taylor +- Fix problem with missing desktop starthere.desktop file +- New snapshot from our branch, fixes: + - On upgrade, icons migrated from GNOME desktop are not properly lined up + (#51436) + - icons dropped on the desktop don't end up where dropped. (#51441) + - Nautilus shouldn't have fam monitor read-only windows. This + keeps CDROMS from being unmounted until you close all + + nautilus windows pointing to them. (#51442) + - Warnings about 'cannot statfs...' when moving items to trash. +- Use separate start-here.desktop for panel, since the one used + for the root window only works from Nautilus. + +* Fri Aug 10 2001 Alexander Larsson +- Changed starthere .desktop files to be links instead +- of spawning a new nautilus. This makes start-here: +- much faster. + +* Thu Aug 9 2001 Alexander Larsson +- Added hwbrowser dependency +- New snapshot, fixes the mozilla-view submit form problem + +* Wed Aug 8 2001 Jonathan Blandford +- Rebuild with new xml-i18n-tools +- fix crash in creating new desktop files + +* Tue Aug 7 2001 Jonathan Blandford +- Fix up DnD code some more + +* Thu Aug 02 2001 Havoc Pennington +- Sync our CVS version; fixes some MUSTFIX + (the one about drawing background on startup, + properly translate desktop files, etc.) + +* Wed Aug 1 2001 Alexander Larsson 1.0.4-24 +- Fix 64bit cleanness issue +- Fix NULL mimetype crash +- Disable additional_text for .desktop files + +* Tue Jul 31 2001 Alexander Larsson 1.0.4-23 +- Fix unmounting devices. + +* Tue Jul 31 2001 Alexander Larsson 1.0.4-22 +- Make it depend on gnome-vfs-1.0.1-13. Needed for .desktop +- mimetype sniffing. + +* Mon Jul 30 2001 Alexander Larsson 1.0.4-21 +- Remove the "don't run as root" warning. +- Remove eazel from bookmarks +- langified (again? did someone change it?) + +* Fri Jul 27 2001 Alexander Larsson +- Apply a patch that makes nautilus dnd reset work with the latest +- eel release. + +* Thu Jul 26 2001 Alexander Larsson +- Build on ia64 without the mozilla component. + +* Wed Jul 25 2001 Havoc Pennington +- Fix crash-on-startup showstopper +- Fix can't-find-images bug (this one was only showing up + when built with debug symbols, since it was an uninitialized memory + read) + +* Tue Jul 24 2001 Havoc Pennington +- sync new tarball from our CVS branch, + fixes some drag-and-drop, changes URI scheme names, + etc. + +* Tue Jul 24 2001 Owen Taylor +- Add BuildRequires (#49539, 49537) +- Fix %%post, %%postun (#49720) +- Background efficiency improvements and hacks + +* Fri Jul 13 2001 Alexander Larsson +- Don't launch esd on each mouseover. + +* Wed Jul 11 2001 Havoc Pennington +- move first time druid patch into my "CVS outstanding" patch +- try to really remove Help/Feedback +- try to really fix Help/Community Support +- try again to get Start Here in the Go menu +- try again to get Start Here on the desktop +- don't show file sizes for .desktop files + +* Tue Jul 10 2001 Havoc Pennington +- add newline to ends of .desktop files that were missing them + +* Tue Jul 10 2001 Havoc Pennington +- update to my latest 'cvs diff -u' (adds default + Start Here link, displays .directory name in sidebar) +- include /etc/X11/* links (starthere, sysconfig, serverconfig) + +* Tue Jul 10 2001 Jonathan Blandford +- Patch to remove firsttime druid and flash + +* Mon Jul 09 2001 Havoc Pennington +- add hacks for displaying desktop files +- add hack to turn off the "unwriteable" emblem + +* Sun Jul 8 2001 Tim Powers +- added defattr to the files lists to be (-,root,root) +- languified + +* Sat Jul 7 2001 Alexander Larsson +- Need to run autoheader too. + +* Fri Jul 6 2001 Alexander Larsson +- Make the fam dependency a real runtime dependency +- by linking to libfam (nautilus-1.0.4-fam-lib.patch) +- Cleaned up specfile. + +* Fri Jul 6 2001 Alexander Larsson +- Change default background and rubberband color. +- Use the sidebar tabs from the default theme +- BuildDepend on fam-devel, depend on fam +- Disable the eazel update pages in the first-time druid. +- Remove the eazel logo from the first-time druid + +* Thu Jul 05 2001 Havoc Pennington +- 1.0.4, removes eazel services icon and wizard page +- Eazel logo is still in startup wizard for now, needs fixing + +* Tue Jul 03 2001 Havoc Pennington +- fix group (s/Desktop/Desktops/) #47134 +- remove ammonite dependency + +* Wed Jun 27 2001 Havoc Pennington +- add a different default theme +- clean up file list overspecificity a bit + +* Tue Jun 26 2001 Havoc Pennington +- move to a CVS snapshot of nautilus for now + (Darin is my hero for having distcheck work out of CVS) + +* Thu May 10 2001 Jonathan Blandford +- clean up defaults a bit + +* Wed May 9 2001 Jonathan Blandford +- New version + +* Tue Apr 17 2001 Gregory Leblanc +- Added BuildRequires lines +- Changed Source to point to ftp.gnome.org instead of just the tarball name +- Moved %%description sections closer to their %%package sections +- Moved %%changelog to the end, where so that it's not in the way +- Changed configure and make install options to allow moving of + libraries, includes, binaries more easily +- Removed hard-coded paths (don't define %%prefix or %%docdir) +- replace %%{prefix}/bin with %%{_bindir} +- replace %%{prefix}/share with %%{_datadir} +- replace %%{prefix}/lib with %%{_libdir} +- replace %%{prefix}/include with %%{_includedir} + +* Tue Oct 10 2000 Robin Slomkowski +- removed obsoletes from sub packages and added mozilla and trilobite +subpackages + +* Wed Apr 26 2000 Ramiro Estrugo +- created this thing