diff --git a/.gitignore b/.gitignore index 2c45c4e..546683e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/nautilus-40.1.tar.xz +SOURCES/nautilus-40.2.tar.xz diff --git a/.nautilus.metadata b/.nautilus.metadata index 7e7a7a9..5f7a89f 100644 --- a/.nautilus.metadata +++ b/.nautilus.metadata @@ -1 +1 @@ -72aee7242696f687fcd8f774d00e90b537f9ca39 SOURCES/nautilus-40.1.tar.xz +c1b959b40074dd0e8e2df8289c61a3abf5fa8d5a SOURCES/nautilus-40.2.tar.xz diff --git a/SOURCES/664.patch b/SOURCES/664.patch deleted file mode 100644 index ca836d8..0000000 --- a/SOURCES/664.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 3e03a8b05258cf88bd61c61e3ac599103d464b38 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ant=C3=B3nio=20Fernandes?= -Date: Sat, 1 May 2021 23:54:43 +0100 -Subject: [PATCH] files-view: Set PWD to current dir to run scripts - -When running an executable text file as a program, it's reasonable to -expect that the directory currently displayed by the file browser -becomes the current working directory for that program. This used to be -handled correctly by the activation action. - -While taking "Run as a Program" out of activation into a standalone -action, this behavior was left behind. - -Let's add it back to the standalone action to fix the regression. - -Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/1842 ---- - src/nautilus-files-view.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c -index 250c37264..e027f10e0 100644 ---- a/src/nautilus-files-view.c -+++ b/src/nautilus-files-view.c -@@ -6619,6 +6619,7 @@ action_run_in_terminal (GSimpleAction *action, - { - NautilusFilesView *view; - g_autolist (NautilusFile) selection = NULL; -+ g_autofree char *old_working_dir = NULL; - g_autofree char *uri = NULL; - g_autofree char *executable_path = NULL; - g_autofree char *quoted_path = NULL; -@@ -6636,6 +6637,8 @@ action_run_in_terminal (GSimpleAction *action, - return; - } - -+ old_working_dir = change_to_view_directory (view); -+ - uri = nautilus_file_get_activation_uri (NAUTILUS_FILE (selection->data)); - executable_path = g_filename_from_uri (uri, NULL, NULL); - quoted_path = g_shell_quote (executable_path); -@@ -6646,6 +6649,8 @@ action_run_in_terminal (GSimpleAction *action, - DEBUG ("Launching in terminal %s", quoted_path); - - nautilus_launch_application_from_command (screen, quoted_path, TRUE, NULL); -+ -+ g_chdir (old_working_dir); - } - - #define BG_KEY_PRIMARY_COLOR "primary-color" --- -GitLab - diff --git a/SOURCES/compress-dialog-Add-support-for-encrypted-.zip.patch b/SOURCES/compress-dialog-Add-support-for-encrypted-.zip.patch new file mode 100644 index 0000000..832726f --- /dev/null +++ b/SOURCES/compress-dialog-Add-support-for-encrypted-.zip.patch @@ -0,0 +1,611 @@ +From 98c79d46ab05bd86fc1309d9ae560edc19f62071 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Fri, 30 Jul 2021 10:52:55 +0200 +Subject: [PATCH] compress-dialog: Add support for encrypted .zip + +Currently, it is not possible to create encrypted archives over +Nautilus. Let's add support for encrypted .zip files to not have +to install a dedicated archive manager. + +Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/822 +--- + data/org.gnome.nautilus.gschema.xml | 1 + + meson.build | 2 +- + src/nautilus-compress-dialog-controller.c | 136 +++++++++++++++++++ + src/nautilus-compress-dialog-controller.h | 1 + + src/nautilus-file-operations.c | 8 +- + src/nautilus-file-operations.h | 1 + + src/nautilus-file-undo-operations.c | 7 +- + src/nautilus-file-undo-operations.h | 3 +- + src/nautilus-files-view.c | 10 ++ + src/nautilus-global-preferences.h | 3 +- + src/resources/css/nautilus.css | 9 ++ + src/resources/ui/nautilus-compress-dialog.ui | 57 ++++++++ + 12 files changed, 233 insertions(+), 5 deletions(-) + +diff --git a/data/org.gnome.nautilus.gschema.xml b/data/org.gnome.nautilus.gschema.xml +index 3f89466de..7585be8cd 100644 +--- a/data/org.gnome.nautilus.gschema.xml ++++ b/data/org.gnome.nautilus.gschema.xml +@@ -65,6 +65,7 @@ + + + ++ + + + +diff --git a/meson.build b/meson.build +index d5316475d..446b25614 100644 +--- a/meson.build ++++ b/meson.build +@@ -117,7 +117,7 @@ gio = dependency('gio-2.0', version: glib_ver) + gio_unix = dependency('gio-unix-2.0', version: glib_ver) + glib = dependency('glib-2.0', version: glib_ver) + gmodule = dependency('gmodule-no-export-2.0', version: glib_ver) +-gnome_autoar = dependency('gnome-autoar-0', version: '>= 0.3.0') ++gnome_autoar = dependency('gnome-autoar-0', version: '>= 0.4.0') + gnome_desktop = dependency('gnome-desktop-3.0', version: '>= 3.0.0') + gtk = dependency('gtk+-3.0', version: '>= 3.22.27') + libhandy = dependency('libhandy-1', version: '>= 1.1.90') +diff --git a/src/nautilus-compress-dialog-controller.c b/src/nautilus-compress-dialog-controller.c +index 154573c0f..e1ba5a803 100644 +--- a/src/nautilus-compress-dialog-controller.c ++++ b/src/nautilus-compress-dialog-controller.c +@@ -32,17 +32,24 @@ struct _NautilusCompressDialogController + NautilusFileNameWidgetController parent_instance; + + GtkWidget *compress_dialog; ++ GtkWidget *activate_button; ++ GtkWidget *error_label; + GtkWidget *name_entry; + GtkWidget *extension_stack; + GtkWidget *zip_label; ++ GtkWidget *encrypted_zip_label; + GtkWidget *tar_xz_label; + GtkWidget *seven_zip_label; + GtkWidget *extension_popover; + GtkWidget *zip_checkmark; ++ GtkWidget *encrypted_zip_checkmark; + GtkWidget *tar_xz_checkmark; + GtkWidget *seven_zip_checkmark; ++ GtkWidget *passphrase_label; ++ GtkWidget *passphrase_entry; + + const char *extension; ++ gchar *passphrase; + + gulong response_handler_id; + }; +@@ -142,6 +149,7 @@ update_selected_format (NautilusCompressDialogController *self, + const char *extension; + GtkWidget *active_label; + GtkWidget *active_checkmark; ++ gboolean show_passphrase = FALSE; + + switch (format) + { +@@ -153,6 +161,15 @@ update_selected_format (NautilusCompressDialogController *self, + } + break; + ++ case NAUTILUS_COMPRESSION_ENCRYPTED_ZIP: ++ { ++ extension = ".zip"; ++ active_label = self->encrypted_zip_label; ++ active_checkmark = self->encrypted_zip_checkmark; ++ show_passphrase = TRUE; ++ } ++ break; ++ + case NAUTILUS_COMPRESSION_TAR_XZ: + { + extension = ".tar.xz"; +@@ -178,12 +195,26 @@ update_selected_format (NautilusCompressDialogController *self, + + self->extension = extension; + ++ gtk_widget_set_visible (self->passphrase_label, show_passphrase); ++ gtk_widget_set_visible (self->passphrase_entry, show_passphrase); ++ if (!show_passphrase) ++ { ++ gtk_entry_set_text (GTK_ENTRY (self->passphrase_entry), ""); ++ gtk_entry_set_visibility (GTK_ENTRY (self->passphrase_entry), FALSE); ++ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (self->passphrase_entry), ++ GTK_ENTRY_ICON_SECONDARY, ++ "view-conceal"); ++ } ++ + gtk_stack_set_visible_child (GTK_STACK (self->extension_stack), + active_label); + + gtk_image_set_from_icon_name (GTK_IMAGE (self->zip_checkmark), + NULL, + GTK_ICON_SIZE_BUTTON); ++ gtk_image_set_from_icon_name (GTK_IMAGE (self->encrypted_zip_checkmark), ++ NULL, ++ GTK_ICON_SIZE_BUTTON); + gtk_image_set_from_icon_name (GTK_IMAGE (self->tar_xz_checkmark), + NULL, + GTK_ICON_SIZE_BUTTON); +@@ -200,6 +231,7 @@ update_selected_format (NautilusCompressDialogController *self, + /* Since the extension changes when the button is toggled, force a + * verification of the new file name by simulating an entry change + */ ++ gtk_widget_set_sensitive (self->activate_button, FALSE); + g_signal_emit_by_name (self->name_entry, "changed"); + } + +@@ -216,6 +248,19 @@ zip_row_on_activated (HdyActionRow *row, + NAUTILUS_COMPRESSION_ZIP); + } + ++static void ++encrypted_zip_row_on_activated (HdyActionRow *row, ++ gpointer user_data) ++{ ++ NautilusCompressDialogController *controller; ++ ++ controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); ++ ++ gtk_popover_popdown (GTK_POPOVER (controller->extension_popover)); ++ update_selected_format (controller, ++ NAUTILUS_COMPRESSION_ENCRYPTED_ZIP); ++} ++ + static void + tar_xz_row_on_activated (HdyActionRow *row, + gpointer user_data) +@@ -242,6 +287,67 @@ seven_zip_row_on_activated (HdyActionRow *row, + NAUTILUS_COMPRESSION_7ZIP); + } + ++static void ++passphrase_entry_on_changed (GtkEditable *editable, ++ gpointer user_data) ++{ ++ NautilusCompressDialogController *self; ++ const gchar *error_message; ++ ++ self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); ++ ++ g_free (self->passphrase); ++ self->passphrase = g_strdup (gtk_entry_get_text (GTK_ENTRY (self->passphrase_entry))); ++ ++ /* Simulate a change of the name_entry to ensure the correct sensitivity of ++ * the activate_button, but only if the name_entry is valid in order to ++ * avoid changes of the error_revealer. ++ */ ++ error_message = gtk_label_get_text (GTK_LABEL (self->error_label)); ++ if (error_message[0] == '\0') ++ { ++ gtk_widget_set_sensitive (self->activate_button, FALSE); ++ g_signal_emit_by_name (self->name_entry, "changed"); ++ } ++} ++ ++static void ++passphrase_entry_on_icon_press (GtkEntry *entry, ++ GtkEntryIconPosition icon_pos, ++ GdkEvent *event, ++ gpointer user_data) ++{ ++ NautilusCompressDialogController *self; ++ gboolean visibility; ++ ++ self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); ++ visibility = gtk_entry_get_visibility (GTK_ENTRY (self->passphrase_entry)); ++ ++ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (self->passphrase_entry), ++ GTK_ENTRY_ICON_SECONDARY, ++ visibility ? "view-conceal" : "view-reveal"); ++ gtk_entry_set_visibility (GTK_ENTRY (self->passphrase_entry), !visibility); ++} ++ ++static void ++activate_button_on_sensitive_notify (GObject *gobject, ++ GParamSpec *pspec, ++ gpointer user_data) ++{ ++ NautilusCompressDialogController *self; ++ NautilusCompressionFormat format; ++ ++ self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); ++ format = g_settings_get_enum (nautilus_compression_preferences, ++ NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT); ++ if (format == NAUTILUS_COMPRESSION_ENCRYPTED_ZIP && ++ (self->passphrase == NULL || self->passphrase[0] == '\0')) ++ { ++ /* Reset sensitivity of the activate_button if password is not set. */ ++ gtk_widget_set_sensitive (self->activate_button, FALSE); ++ } ++} ++ + NautilusCompressDialogController * + nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + NautilusDirectory *destination_directory, +@@ -256,12 +362,16 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + GtkWidget *activate_button; + GtkWidget *extension_stack; + GtkWidget *zip_label; ++ GtkWidget *encrypted_zip_label; + GtkWidget *tar_xz_label; + GtkWidget *seven_zip_label; + GtkWidget *extension_popover; + GtkWidget *zip_checkmark; ++ GtkWidget *encrypted_zip_checkmark; + GtkWidget *tar_xz_checkmark; + GtkWidget *seven_zip_checkmark; ++ GtkWidget *passphrase_label; ++ GtkWidget *passphrase_entry; + NautilusCompressionFormat format; + + builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/ui/nautilus-compress-dialog.ui"); +@@ -272,12 +382,16 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + activate_button = GTK_WIDGET (gtk_builder_get_object (builder, "activate_button")); + extension_stack = GTK_WIDGET (gtk_builder_get_object (builder, "extension_stack")); + zip_label = GTK_WIDGET (gtk_builder_get_object (builder, "zip_label")); ++ encrypted_zip_label = GTK_WIDGET (gtk_builder_get_object (builder, "encrypted_zip_label")); + tar_xz_label = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_label")); + seven_zip_label = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_label")); + extension_popover = GTK_WIDGET (gtk_builder_get_object (builder, "extension_popover")); + zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "zip_checkmark")); ++ encrypted_zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "encrypted_zip_checkmark")); + tar_xz_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_checkmark")); + seven_zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_checkmark")); ++ passphrase_label = GTK_WIDGET (gtk_builder_get_object (builder, "passphrase_label")); ++ passphrase_entry = GTK_WIDGET (gtk_builder_get_object (builder, "passphrase_entry")); + + gtk_window_set_transient_for (GTK_WINDOW (compress_dialog), + parent_window); +@@ -290,16 +404,22 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + "containing-directory", destination_directory, NULL); + + self->compress_dialog = compress_dialog; ++ self->activate_button = activate_button; ++ self->error_label = error_label; + self->extension_stack = extension_stack; + self->zip_label = zip_label; ++ self->encrypted_zip_label = encrypted_zip_label; + self->tar_xz_label = tar_xz_label; + self->seven_zip_label = seven_zip_label; + self->name_entry = name_entry; + self->extension_popover = extension_popover; + self->zip_checkmark = zip_checkmark; ++ self->encrypted_zip_checkmark = encrypted_zip_checkmark; + self->tar_xz_checkmark = tar_xz_checkmark; + self->seven_zip_checkmark = seven_zip_checkmark; + self->name_entry = name_entry; ++ self->passphrase_label = passphrase_label; ++ self->passphrase_entry = passphrase_entry; + + self->response_handler_id = g_signal_connect (compress_dialog, + "response", +@@ -309,10 +429,18 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + gtk_builder_add_callback_symbols (builder, + "zip_row_on_activated", + G_CALLBACK (zip_row_on_activated), ++ "encrypted_zip_row_on_activated", ++ G_CALLBACK (encrypted_zip_row_on_activated), + "tar_xz_row_on_activated", + G_CALLBACK (tar_xz_row_on_activated), + "seven_zip_row_on_activated", + G_CALLBACK (seven_zip_row_on_activated), ++ "passphrase_entry_on_changed", ++ G_CALLBACK (passphrase_entry_on_changed), ++ "passphrase_entry_on_icon_press", ++ G_CALLBACK (passphrase_entry_on_icon_press), ++ "activate_button_on_sensitive_notify", ++ G_CALLBACK (activate_button_on_sensitive_notify), + NULL); + gtk_builder_connect_signals (builder, self); + +@@ -350,6 +478,8 @@ nautilus_compress_dialog_controller_finalize (GObject *object) + self->compress_dialog = NULL; + } + ++ g_free (self->passphrase); ++ + G_OBJECT_CLASS (nautilus_compress_dialog_controller_parent_class)->finalize (object); + } + +@@ -364,3 +494,9 @@ nautilus_compress_dialog_controller_class_init (NautilusCompressDialogController + parent_class->get_new_name = nautilus_compress_dialog_controller_get_new_name; + parent_class->name_is_valid = nautilus_compress_dialog_controller_name_is_valid; + } ++ ++const gchar * ++nautilus_compress_dialog_controller_get_passphrase (NautilusCompressDialogController *self) ++{ ++ return self->passphrase; ++} +diff --git a/src/nautilus-compress-dialog-controller.h b/src/nautilus-compress-dialog-controller.h +index 2421b8115..6c96d68fa 100644 +--- a/src/nautilus-compress-dialog-controller.h ++++ b/src/nautilus-compress-dialog-controller.h +@@ -31,3 +31,4 @@ G_DECLARE_FINAL_TYPE (NautilusCompressDialogController, nautilus_compress_dialog + NautilusCompressDialogController * nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + NautilusDirectory *destination_directory, + gchar *initial_name); ++const gchar * nautilus_compress_dialog_controller_get_passphrase (NautilusCompressDialogController *controller); +diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c +index 59beecd7e..f909173f9 100644 +--- a/src/nautilus-file-operations.c ++++ b/src/nautilus-file-operations.c +@@ -222,6 +222,7 @@ typedef struct + + AutoarFormat format; + AutoarFilter filter; ++ gchar *passphrase; + + guint64 total_size; + guint total_files; +@@ -8753,6 +8754,7 @@ compress_task_done (GObject *source_object, + + g_object_unref (compress_job->output_file); + g_list_free_full (compress_job->source_files, g_object_unref); ++ g_free (compress_job->passphrase); + + finalize_common ((CommonJob *) compress_job); + +@@ -9027,6 +9029,7 @@ compress_task_thread_func (GTask *task, + compress_job->format, + compress_job->filter, + FALSE); ++ autoar_compressor_set_passphrase (compressor, compress_job->passphrase); + + autoar_compressor_set_output_is_dest (compressor, TRUE); + +@@ -9057,6 +9060,7 @@ nautilus_file_operations_compress (GList *files, + GFile *output, + AutoarFormat format, + AutoarFilter filter, ++ const gchar *passphrase, + GtkWindow *parent_window, + NautilusFileOperationsDBusData *dbus_data, + NautilusCreateCallback done_callback, +@@ -9072,6 +9076,7 @@ nautilus_file_operations_compress (GList *files, + compress_job->output_file = g_object_ref (output); + compress_job->format = format; + compress_job->filter = filter; ++ compress_job->passphrase = g_strdup (passphrase); + compress_job->done_callback = done_callback; + compress_job->done_callback_data = done_callback_data; + +@@ -9082,7 +9087,8 @@ nautilus_file_operations_compress (GList *files, + compress_job->common.undo_info = nautilus_file_undo_info_compress_new (files, + output, + format, +- filter); ++ filter, ++ passphrase); + } + + task = g_task_new (NULL, compress_job->common.cancellable, +diff --git a/src/nautilus-file-operations.h b/src/nautilus-file-operations.h +index 8236e0e06..14d664f80 100644 +--- a/src/nautilus-file-operations.h ++++ b/src/nautilus-file-operations.h +@@ -159,6 +159,7 @@ void nautilus_file_operations_compress (GList *files, + GFile *output, + AutoarFormat format, + AutoarFilter filter, ++ const gchar *passphrase, + GtkWindow *parent_window, + NautilusFileOperationsDBusData *dbus_data, + NautilusCreateCallback done_callback, +diff --git a/src/nautilus-file-undo-operations.c b/src/nautilus-file-undo-operations.c +index a6a3b2025..64f9ce76c 100644 +--- a/src/nautilus-file-undo-operations.c ++++ b/src/nautilus-file-undo-operations.c +@@ -2495,6 +2495,7 @@ struct _NautilusFileUndoInfoCompress + GFile *output; + AutoarFormat format; + AutoarFilter filter; ++ gchar *passphrase; + }; + + G_DEFINE_TYPE (NautilusFileUndoInfoCompress, nautilus_file_undo_info_compress, NAUTILUS_TYPE_FILE_UNDO_INFO) +@@ -2562,6 +2563,7 @@ compress_redo_func (NautilusFileUndoInfo *info, + self->output, + self->format, + self->filter, ++ self->passphrase, + parent_window, + dbus_data, + compress_callback, +@@ -2597,6 +2599,7 @@ nautilus_file_undo_info_compress_finalize (GObject *obj) + + g_list_free_full (self->sources, g_object_unref); + g_clear_object (&self->output); ++ g_free (self->passphrase); + + G_OBJECT_CLASS (nautilus_file_undo_info_compress_parent_class)->finalize (obj); + } +@@ -2618,7 +2621,8 @@ NautilusFileUndoInfo * + nautilus_file_undo_info_compress_new (GList *sources, + GFile *output, + AutoarFormat format, +- AutoarFilter filter) ++ AutoarFilter filter, ++ const gchar *passphrase) + { + NautilusFileUndoInfoCompress *self; + +@@ -2631,6 +2635,7 @@ nautilus_file_undo_info_compress_new (GList *sources, + self->output = g_object_ref (output); + self->format = format; + self->filter = filter; ++ self->passphrase = g_strdup (passphrase); + + return NAUTILUS_FILE_UNDO_INFO (self); + } +diff --git a/src/nautilus-file-undo-operations.h b/src/nautilus-file-undo-operations.h +index f96f2fe69..09ae17cef 100644 +--- a/src/nautilus-file-undo-operations.h ++++ b/src/nautilus-file-undo-operations.h +@@ -226,4 +226,5 @@ G_DECLARE_FINAL_TYPE (NautilusFileUndoInfoCompress, nautilus_file_undo_info_comp + NautilusFileUndoInfo * nautilus_file_undo_info_compress_new (GList *sources, + GFile *output, + AutoarFormat format, +- AutoarFilter filter); ++ AutoarFilter filter, ++ const gchar *passphrase); +diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c +index b4a91226b..47aed3cc1 100644 +--- a/src/nautilus-files-view.c ++++ b/src/nautilus-files-view.c +@@ -2235,6 +2235,7 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c + NautilusFilesViewPrivate *priv; + AutoarFormat format; + AutoarFilter filter; ++ const gchar *passphrase = NULL; + + view = NAUTILUS_FILES_VIEW (callback_data->view); + priv = nautilus_files_view_get_instance_private (view); +@@ -2280,6 +2281,14 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c + } + break; + ++ case NAUTILUS_COMPRESSION_ENCRYPTED_ZIP: ++ { ++ format = AUTOAR_FORMAT_ZIP; ++ filter = AUTOAR_FILTER_NONE; ++ passphrase = nautilus_compress_dialog_controller_get_passphrase (priv->compress_controller); ++ } ++ break; ++ + case NAUTILUS_COMPRESSION_TAR_XZ: + { + format = AUTOAR_FORMAT_TAR; +@@ -2301,6 +2310,7 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c + nautilus_file_operations_compress (source_files, output, + format, + filter, ++ passphrase, + nautilus_files_view_get_containing_window (view), + NULL, + compress_done, +diff --git a/src/nautilus-global-preferences.h b/src/nautilus-global-preferences.h +index 8c482f7ce..2e8753b3c 100644 +--- a/src/nautilus-global-preferences.h ++++ b/src/nautilus-global-preferences.h +@@ -77,7 +77,8 @@ typedef enum + { + NAUTILUS_COMPRESSION_ZIP = 0, + NAUTILUS_COMPRESSION_TAR_XZ, +- NAUTILUS_COMPRESSION_7ZIP ++ NAUTILUS_COMPRESSION_7ZIP, ++ NAUTILUS_COMPRESSION_ENCRYPTED_ZIP + } NautilusCompressionFormat; + + /* Icon View */ +diff --git a/src/resources/css/nautilus.css b/src/resources/css/nautilus.css +index 2e46b7abe..ee25a36a8 100644 +--- a/src/resources/css/nautilus.css ++++ b/src/resources/css/nautilus.css +@@ -3,3 +3,12 @@ + padding-left: 5px; + padding-right: 5px; + } ++ ++label.encrypted_zip, ++row.encrypted_zip label.title { ++ background-image: -gtk-icontheme('system-lock-screen-symbolic'); ++ background-position: right center; ++ background-repeat: no-repeat; ++ background-size: 16px 16px; ++ padding-right: 24px; ++} +diff --git a/src/resources/ui/nautilus-compress-dialog.ui b/src/resources/ui/nautilus-compress-dialog.ui +index b36539294..a57765eed 100644 +--- a/src/resources/ui/nautilus-compress-dialog.ui ++++ b/src/resources/ui/nautilus-compress-dialog.ui +@@ -28,6 +28,26 @@ + + + ++ ++ ++ True ++ True ++ .zip ++ Password protected .zip, must be installed on Windows and Mac. ++ ++ ++ ++ ++ True ++ 16 ++ 12 ++ 12 ++ ++ ++ ++ + + + True +@@ -129,6 +149,15 @@ + 0 + + ++ ++ ++ .zip ++ 0 ++ ++ ++ + + + .tar.xz +@@ -179,6 +208,33 @@ + 3 + + ++ ++ ++ Password ++ 6 ++ 0 ++ ++ ++ False ++ True ++ 4 ++ ++ ++ ++ ++ Enter a password here. ++ password ++ False ++ view-conceal ++ ++ ++ ++ ++ False ++ True ++ 5 ++ ++ + + + +@@ -197,6 +253,7 @@ + True + True + False ++ + + + +-- +2.31.1 + diff --git a/SOURCES/compress-dialog-Backport-translations.patch b/SOURCES/compress-dialog-Backport-translations.patch new file mode 100644 index 0000000..713c179 --- /dev/null +++ b/SOURCES/compress-dialog-Backport-translations.patch @@ -0,0 +1,682 @@ +diff --git a/po/ca.po b/po/ca.po +index aeae0331c..bbab22965 100644 +--- a/po/ca.po ++++ b/po/ca.po +@@ -5895,3 +5895,15 @@ msgstr "Introduïu l'adreça del servidor..." + + #~ msgid "Only create windows for explicitly specified URIs." + #~ msgstr "Només crea finestres per als URI indicats explícitament." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Fitxer .zip protegit amb contrasenya, s'ha d'instal·lar a Windows i Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Contrasenya" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Introduïu una contrasenya aquí." +diff --git a/po/cs.po b/po/cs.po +index 36a8d4ebb..5bca98e82 100644 +--- a/po/cs.po ++++ b/po/cs.po +@@ -5755,3 +5755,15 @@ msgstr "Připojit se k _serveru" + msgid "Enter server address…" + msgstr "zadejte adresu serveru…" + ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Heslem chráněný .zip, do Windows a na Mac je nutné doinstalovat." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Heslo" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "zde zadejte heslo" +diff --git a/po/da.po b/po/da.po +index d6901920f..7c2b9a1ce 100644 +--- a/po/da.po ++++ b/po/da.po +@@ -7510,3 +7510,15 @@ msgstr "Indtast serveradresse …" + + #~ msgid "link" + #~ msgstr "henvisning" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Adgangskodebeskyttet .zip — skal installeres på Windows og Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Adgangskode" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Indtast en adgangskode her." +diff --git a/po/de.po b/po/de.po +index 4e4bc33d6..dd9128f32 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -6020,3 +6020,17 @@ msgstr "Serveradresse eingeben …" + + #~ msgid "Prefere_nces" + #~ msgstr "_Einstellungen" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Passwortgeschütztes .zip-Archiv. Hierfür muss unter Windows und Mac Software " ++"installiert werden." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Passwort" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Geben Sie hier ein Passwort ein." +diff --git a/po/el.po b/po/el.po +index 65029aec6..5e89b8a33 100644 +--- a/po/el.po ++++ b/po/el.po +@@ -6121,3 +6121,17 @@ msgstr "Εισαγωγή διεύθυνσης διακομιστή…" + + #~ msgid "smb://" + #~ msgstr "smb://" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Αρχεία .zip προστατευμένα με συνθηματικό, πρέπει να εγκατασταθούν σε Windows " ++"και Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Συνθηματικό" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Εισαγωγή συνθηματικού εδώ." +diff --git a/po/en_GB.po b/po/en_GB.po +index 1adc903d8..254d6022e 100644 +--- a/po/en_GB.po ++++ b/po/en_GB.po +@@ -10311,3 +10311,15 @@ msgstr "Enter server address…" + + #~ msgid "Question" + #~ msgstr "Question" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Password protected .zip, must be installed on Windows and Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Password" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Enter a password here." +diff --git a/po/es.po b/po/es.po +index f168c54d6..de8e7e7fa 100644 +--- a/po/es.po ++++ b/po/es.po +@@ -11253,3 +11253,19 @@ msgstr "Introduzca la dirección del servidor…" + #~ msgstr "" + #~ "Nautilus es un shell gráfico para GNOME que facilita la administración de " + #~ "sus archivos y el resto de su sistema." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++#| msgid "Smaller archives but must be installed on Windows and Mac." ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr ".zip protegido por contraseña, se debe instalar en Windows o Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++#| msgid "Pass_word:" ++msgid "Password" ++msgstr "Contraseña" ++ ++# src/nautilus-location-bar.c:401 ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++#| msgid "Enter password…" ++msgid "Enter a password here." ++msgstr "Introduzca una contraseña aquí." +diff --git a/po/eu.po b/po/eu.po +index 5f48c29c8..f886de542 100644 +--- a/po/eu.po ++++ b/po/eu.po +@@ -5676,3 +5676,15 @@ msgstr "Sartu zerbitzariaren helbidea…" + + #~ msgid "Only create windows for explicitly specified URIs." + #~ msgstr "Zehaztutako URIentzat bakarrik sortu leihoak." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Pasahitzez babestutako .zip fitxategia, Windows eta Mac-en instalatu behar da." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Pasahitza" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Idatzi pasahitza hemen." +diff --git a/po/fa.po b/po/fa.po +index 52b1d9f2a..d1aa5131b 100644 +--- a/po/fa.po ++++ b/po/fa.po +@@ -10614,3 +10614,15 @@ msgstr "نشانی کارساز را وارد کنید…" + + #~ msgid "C_ancel Remove" + #~ msgstr "ان_صراف از حذف" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "پروندهٔ ⁦.zip⁩ محافظت‌شده با گذرواژه، باید روی ویندوز و مک نصب باشد." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "گذرواژه" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "این‌جا گذرواژه‌ای وارد کنید." +diff --git a/po/fi.po b/po/fi.po +index 7fc36774d..235453bb3 100644 +--- a/po/fi.po ++++ b/po/fi.po +@@ -7363,3 +7363,15 @@ msgstr "Anna palvelimen osoite…" + + #~ msgid "_Up" + #~ msgstr "_Ylös" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Salasanalla suojattu .zip, tulee asentaa Windowsille ja Macille." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Salasana" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Kirjoita salasana tähän." +diff --git a/po/fr.po b/po/fr.po +index c01c70e4a..8cb792c9d 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -6002,3 +6002,20 @@ msgstr "Saisir l’adresse du serveur…" + + #~ msgid "smb://" + #~ msgstr "smb://" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++#| msgid "Smaller archives but must be installed on Windows and Mac." ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++".zip protégé par mot de passe, mais nécessite une installation sur Windows " ++"et Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++#| msgid "Password Required" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++#| msgid "Enter password…" ++msgid "Enter a password here." ++msgstr "Saisissez un mot de passe ici." +diff --git a/po/gl.po b/po/gl.po +index 0e695ca91..98d5b8487 100644 +--- a/po/gl.po ++++ b/po/gl.po +@@ -5881,3 +5881,19 @@ msgstr "Escriba o enderezo do servidor…" + + #~ msgid "New _Folder…" + #~ msgstr "Novo _cartafol…" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++#| msgid "Smaller archives but must be installed on Windows and Mac." ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++".zip protexido con contrasinal, deben estar instalados en Windows e Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++#| msgid "Password Required" ++msgid "Password" ++msgstr "Contrasinal" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++#| msgid "Enter password…" ++msgid "Enter a password here." ++msgstr "Escriba un contrasinal aquí…" +diff --git a/po/he.po b/po/he.po +index 3706273a9..86bbf14e9 100644 +--- a/po/he.po ++++ b/po/he.po +@@ -11131,3 +11131,15 @@ msgstr "יש לההזין כתובת שרת…" + + #~ msgid "Question" + #~ msgstr "שאלה" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "קובץ ‎.zip מוגן בססמה, חייב להיות מותקן ב־Windows וב־Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "ססמה" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "נא למלא כאן ססמה." +diff --git a/po/hr.po b/po/hr.po +index 1a864ce9d..45625fd20 100644 +--- a/po/hr.po ++++ b/po/hr.po +@@ -6477,3 +6477,15 @@ msgstr "Upiši adresu poslužitelja…" + + #~ msgid "Re_verse Order" + #~ msgstr "Ob_rni poredak" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Lozinkom zaštićeni .zip, mora biti instaliran na Windows i Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Lozinka" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Upišite lozinku ovdje." +diff --git a/po/hu.po b/po/hu.po +index b547cd30d..1fa73c01e 100644 +--- a/po/hu.po ++++ b/po/hu.po +@@ -5853,3 +5853,18 @@ msgstr "Adja meg a kiszolgáló címét…" + + #~ msgid "New _Folder…" + #~ msgstr "Új _mappa…" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++#| msgid "Smaller archives but must be installed on Windows and Mac." ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Jelszóval védett .zip, Windowsra és Macre telepíteni kell." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++#| msgid "Password Required" ++msgid "Password" ++msgstr "Jelszó" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++#| msgid "Enter password…" ++msgid "Enter a password here." ++msgstr "Adjon meg egy jelszót itt." +diff --git a/po/id.po b/po/id.po +index 7bfd400b2..352cf746e 100644 +--- a/po/id.po ++++ b/po/id.po +@@ -6355,3 +6355,16 @@ msgstr "Masukkan alamat peladen…" + + #~ msgid "Mark as _Trusted" + #~ msgstr "_Tandai Dipercaya" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Berkas .zip yang dilindungi kata sandi, harus dipasang pada Windows dan Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Kata Sandi" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Masukkan kata sandi di sini." +diff --git a/po/kk.po b/po/kk.po +index 6b1ed27b9..921c46940 100644 +--- a/po/kk.po ++++ b/po/kk.po +@@ -7842,3 +7842,17 @@ msgstr "Сервер адресін енгізіңіз…" + #~ msgstr "" + #~ "Қоқыс шелегін тазартуды таңдасаңыз, құрамасы жойылады. Оларды жеке-жеке " + #~ "өшіруге болатынын есте сақтаңыз." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Парольмен қорғалған .zip архивтері, Windows және Mac-та орнатылған болуы " ++"тиіс." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Пароль" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Парольді осында енгізіңіз." +diff --git a/po/ko.po b/po/ko.po +index 43533fe3b..56077c21f 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -5733,3 +5733,15 @@ msgstr "서버 주소 입력…" + + #~ msgid "smb://" + #~ msgstr "smb://" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "암호로 보호된 .zip 파일, 윈도우와 맥에서 설치해야 함." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "암호" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "여기 암호를 입력하십시오." +diff --git a/po/lt.po b/po/lt.po +index 7a257c609..4fc020a94 100644 +--- a/po/lt.po ++++ b/po/lt.po +@@ -7500,3 +7500,19 @@ msgstr "Įveskite _serverio adresą…" + + #~ msgid "_Up" + #~ msgstr "_Aukštyn" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++#| msgid "Smaller archives but must be installed on Windows and Mac." ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Slaptažodžiu apsaugotas .zip, turi būti įdiegti Windows ir Mac sistemose." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++#| msgid "Password Required" ++msgid "Password" ++msgstr "Slaptažodis" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++#| msgid "Enter password…" ++msgid "Enter a password here." ++msgstr "Įveskite slaptažodį čia." +diff --git a/po/nl.po b/po/nl.po +index 77eab583b..393749329 100644 +--- a/po/nl.po ++++ b/po/nl.po +@@ -6837,3 +6837,17 @@ msgstr "Voer serveradres in…" + + #~ msgid "Move Dow_n" + #~ msgstr "Naar b_eneden" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Zipbestand beschermd met wachtwoord, moet op Windows en Mac geïnstalleerd " ++"worden." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Wachtwoord" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Voer hier een wachtwoord in." +diff --git a/po/oc.po b/po/oc.po +index e4d1cabbc..f0c23bfda 100644 +--- a/po/oc.po ++++ b/po/oc.po +@@ -7520,3 +7520,16 @@ msgstr "Entrar l'adreça del _servidor…" + + #~ msgid "Copying “%B” to “%B”" + #~ msgstr "Còpia de « %B » cap a « %B »" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Fichièr zip protegit per senhal, requerís una installacion sus Windows e Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Senhal" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Picatz un senhal aquí." +diff --git a/po/pl.po b/po/pl.po +index 499b5b1ea..ce1c46677 100644 +--- a/po/pl.po ++++ b/po/pl.po +@@ -5776,3 +5776,17 @@ msgstr "Połącz z _serwerem" + #: src/gtk/nautilusgtkplacesview.ui:340 + msgid "Enter server address…" + msgstr "Adres serwera…" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Archiwum .zip chronione hasłem, wymaga dodatkowego oprogramowania " ++"w systemach Windows i Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Hasło" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Hasło…" +diff --git a/po/pt.po b/po/pt.po +index 2c071f039..ffacf5123 100644 +--- a/po/pt.po ++++ b/po/pt.po +@@ -6482,3 +6482,16 @@ msgstr "Insira o endereço do servidor…" + + #~ msgid "Whether the row represents a network location" + #~ msgstr "Se a linha representa uma localização de rede" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"O .zip protegido por palavra-passe deve ser instalado no Windows e Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Palavra-passe" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Introduza aqui uma palavra-passe." +diff --git a/po/pt_BR.po b/po/pt_BR.po +index 2bb4e4ca6..42c5f4a81 100644 +--- a/po/pt_BR.po ++++ b/po/pt_BR.po +@@ -7565,3 +7565,15 @@ msgstr "Insira endereço do servidor…" + + #~ msgid "_Bookmarks..." + #~ msgstr "_Marcadores..." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Arquivo .zip protegido por senha, pode ser instalado no Windows e Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Senha" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Insira uma senha aqui." +diff --git a/po/ro.po b/po/ro.po +index cc2a2cb6d..b96dffd27 100644 +--- a/po/ro.po ++++ b/po/ro.po +@@ -9645,3 +9645,16 @@ msgstr "Introduceți adresa serverului…" + #~ msgstr "" + #~ "Afișează modele, culori și embleme ce pot fi folosite pentru a " + #~ "personaliza aspectul" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Arhive zip protejate de parolă, dar trebuiesc instalate pe Windows și Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Parolă" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Introduceți parola." +diff --git a/po/ru.po b/po/ru.po +index b0d6868fa..be97cf11d 100644 +--- a/po/ru.po ++++ b/po/ru.po +@@ -6573,3 +6573,17 @@ msgstr "Ввести адрес сервера…" + #~ msgctxt "Bookmark" + #~ msgid "_Name" + #~ msgstr "_Имя" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Защищённый паролем архив, требует установки приложения для открытия в " ++"Windows и Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Пароль" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Введите пароль здесь." +diff --git a/po/sk.po b/po/sk.po +index d44e7fbe7..00edea5f8 100644 +--- a/po/sk.po ++++ b/po/sk.po +@@ -7706,3 +7706,16 @@ msgstr "Zadajte adresu servera…" + + #~ msgid "Places" + #~ msgstr "Miesta" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Heslom chránený súbor .zip, musí byť nainštalovaný v systéme Windows a Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Heslo" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Sem zadajte heslo." +diff --git a/po/sl.po b/po/sl.po +index 988752a10..7d1d001d6 100644 +--- a/po/sl.po ++++ b/po/sl.po +@@ -7743,3 +7743,17 @@ msgstr "Vpis naslova strežnika …" + #~ "Skupaj s programom bi morali prejeti kopijo GNU Splošne javne licence. V " + #~ "primeru, da je niste, pišite na Free Software Foundation, Inc., 51 " + #~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "" ++"Z geslom zaščinen arhiv .zip, ki mora biti nameščen na sistemih Windows in " ++"Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Geslo" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Vnos gesla" +diff --git a/po/sv.po b/po/sv.po +index 734631dde..2b9c3ecc9 100644 +--- a/po/sv.po ++++ b/po/sv.po +@@ -6710,3 +6710,15 @@ msgstr "Ange serveradress…" + + #~ msgid "%a, %b %e %Y %T" + #~ msgstr "%a %-e %b %Y %T" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Lösenordsskyddad .zip, måste vara installerat på Windows och Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Lösenord" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Ange ett lösenord här." +diff --git a/po/tr.po b/po/tr.po +index 025d23e72..b0b8b0004 100644 +--- a/po/tr.po ++++ b/po/tr.po +@@ -6594,3 +6594,15 @@ msgstr "Sunucu adresini gir…" + + #~ msgid "D_efault zoom level:" + #~ msgstr "Ön_tanımlı yaklaştırma seviyesi:" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Parola korumalı .zip, Windows ve Mac üzerinde kurulmalıdır." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Parola" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Buraya parola gir…" +diff --git a/po/uk.po b/po/uk.po +index 8a4eb3001..71ad8edbf 100644 +--- a/po/uk.po ++++ b/po/uk.po +@@ -6018,3 +6018,15 @@ msgstr "Уведіть адресу сервера…" + #~| msgid "New _Folder" + #~ msgid "New _Folder…" + #~ msgstr "Створити _теку…" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "Захищений паролем .zip, має бути встановлено у Windows і Mac." ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "Пароль" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "Тут слід ввести пароль." +diff --git a/po/zh_CN.po b/po/zh_CN.po +index e98220b83..896d7415f 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -6185,3 +6185,15 @@ msgstr "输入服务器地址…" + + #~ msgid "Zoom In" + #~ msgstr "放大" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:36 ++msgid "Password protected .zip, must be installed on Windows and Mac." ++msgstr "有密码保护的 .zip 文件,必须在 Windows 和 Mac 上安装额外程序才能打开。" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:213 ++msgid "Password" ++msgstr "密码" ++ ++#: src/resources/ui/nautilus-compress-dialog.ui:225 ++msgid "Enter a password here." ++msgstr "在此处输入密码。" +-- +2.31.1 + diff --git a/SOURCES/compress-dialog-Set-keyboard-focus-on-the-row-with-t.patch b/SOURCES/compress-dialog-Set-keyboard-focus-on-the-row-with-t.patch new file mode 100644 index 0000000..83db921 --- /dev/null +++ b/SOURCES/compress-dialog-Set-keyboard-focus-on-the-row-with-t.patch @@ -0,0 +1,173 @@ +From f3b1a749669c241ae3802e72a22a4eb7d1a44eed Mon Sep 17 00:00:00 2001 +From: Clyde Laforge +Date: Mon, 16 Aug 2021 14:41:39 +0200 +Subject: [PATCH] compress-dialog: Set keyboard focus on the row with the + selected archive format + +Currently the keyboard focus for the type of archive choice is always on +the first element. + +This patch allows the focus to be on the currently selected item instead. + +Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/1944 +--- + src/nautilus-compress-dialog-controller.c | 62 ++++++++++++++++++++ + src/resources/ui/nautilus-compress-dialog.ui | 7 ++- + 2 files changed, 66 insertions(+), 3 deletions(-) + +diff --git a/src/nautilus-compress-dialog-controller.c b/src/nautilus-compress-dialog-controller.c +index e1ba5a803..3f7711ccb 100644 +--- a/src/nautilus-compress-dialog-controller.c ++++ b/src/nautilus-compress-dialog-controller.c +@@ -36,9 +36,13 @@ struct _NautilusCompressDialogController + GtkWidget *error_label; + GtkWidget *name_entry; + GtkWidget *extension_stack; ++ GtkWidget *zip_row; + GtkWidget *zip_label; ++ GtkWidget *encrypted_zip_row; + GtkWidget *encrypted_zip_label; ++ GtkWidget *tar_xz_row; + GtkWidget *tar_xz_label; ++ GtkWidget *seven_zip_row; + GtkWidget *seven_zip_label; + GtkWidget *extension_popover; + GtkWidget *zip_checkmark; +@@ -348,6 +352,50 @@ activate_button_on_sensitive_notify (GObject *gobject, + } + } + ++static void ++popover_on_show (GtkWidget *widget, ++ gpointer user_data) ++{ ++ NautilusCompressDialogController *self; ++ NautilusCompressionFormat format; ++ ++ self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); ++ format = g_settings_get_enum (nautilus_compression_preferences, ++ NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT); ++ switch (format) ++ { ++ case NAUTILUS_COMPRESSION_ZIP: ++ { ++ gtk_widget_grab_focus (self->zip_row); ++ } ++ break; ++ ++ case NAUTILUS_COMPRESSION_ENCRYPTED_ZIP: ++ { ++ gtk_widget_grab_focus (self->encrypted_zip_row); ++ } ++ break; ++ ++ case NAUTILUS_COMPRESSION_TAR_XZ: ++ { ++ gtk_widget_grab_focus (self->tar_xz_row); ++ } ++ break; ++ ++ case NAUTILUS_COMPRESSION_7ZIP: ++ { ++ gtk_widget_grab_focus (self->seven_zip_row); ++ } ++ break; ++ ++ default: ++ { ++ g_assert_not_reached (); ++ } ++ break; ++ } ++} ++ + NautilusCompressDialogController * + nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + NautilusDirectory *destination_directory, +@@ -361,9 +409,13 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + GtkWidget *name_entry; + GtkWidget *activate_button; + GtkWidget *extension_stack; ++ GtkWidget *zip_row; + GtkWidget *zip_label; ++ GtkWidget *encrypted_zip_row; + GtkWidget *encrypted_zip_label; ++ GtkWidget *tar_xz_row; + GtkWidget *tar_xz_label; ++ GtkWidget *seven_zip_row; + GtkWidget *seven_zip_label; + GtkWidget *extension_popover; + GtkWidget *zip_checkmark; +@@ -392,6 +444,10 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + seven_zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_checkmark")); + passphrase_label = GTK_WIDGET (gtk_builder_get_object (builder, "passphrase_label")); + passphrase_entry = GTK_WIDGET (gtk_builder_get_object (builder, "passphrase_entry")); ++ zip_row = GTK_WIDGET (gtk_builder_get_object (builder, "zip_row")); ++ encrypted_zip_row = GTK_WIDGET (gtk_builder_get_object (builder, "encrypted_zip_row")); ++ tar_xz_row = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_row")); ++ seven_zip_row = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_row")); + + gtk_window_set_transient_for (GTK_WINDOW (compress_dialog), + parent_window); +@@ -420,6 +476,10 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + self->name_entry = name_entry; + self->passphrase_label = passphrase_label; + self->passphrase_entry = passphrase_entry; ++ self->zip_row = zip_row; ++ self->encrypted_zip_row = encrypted_zip_row; ++ self->tar_xz_row = tar_xz_row; ++ self->seven_zip_row = seven_zip_row; + + self->response_handler_id = g_signal_connect (compress_dialog, + "response", +@@ -441,6 +501,8 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + G_CALLBACK (passphrase_entry_on_icon_press), + "activate_button_on_sensitive_notify", + G_CALLBACK (activate_button_on_sensitive_notify), ++ "popover_on_show", ++ G_CALLBACK (popover_on_show), + NULL); + gtk_builder_connect_signals (builder, self); + +diff --git a/src/resources/ui/nautilus-compress-dialog.ui b/src/resources/ui/nautilus-compress-dialog.ui +index a57765eed..a6bf9c1fb 100644 +--- a/src/resources/ui/nautilus-compress-dialog.ui ++++ b/src/resources/ui/nautilus-compress-dialog.ui +@@ -2,6 +2,7 @@ + + + ++ + bottom + none + +@@ -12,7 +13,7 @@ + 12 + 12 + +- ++ + True + True + .zip +@@ -49,7 +50,7 @@ + + + +- ++ + True + True + .tar.xz +@@ -66,7 +67,7 @@ + + + +- ++ + True + True + .7z +-- +2.33.1 + diff --git a/SOURCES/compress-dialog-Update-dialog-design.patch b/SOURCES/compress-dialog-Update-dialog-design.patch new file mode 100644 index 0000000..f5feccb --- /dev/null +++ b/SOURCES/compress-dialog-Update-dialog-design.patch @@ -0,0 +1,564 @@ +From e71b54bafcbfffcb352600ebff4be8776de171f9 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Fri, 30 Jul 2021 11:01:42 +0200 +Subject: [PATCH] compress-dialog: Update dialog design + +Let's update the Compress dialog design as per the mockup for the +encrypted archives support. The most visible change is `GtkPopover` +with `HdyActionRow` rows for the format selection instead of the +`GtkRadioButton` buttons. + +https://gitlab.gnome.org/GNOME/nautilus/-/issues/822 +--- + src/nautilus-compress-dialog-controller.c | 132 ++++++----- + src/resources/ui/nautilus-compress-dialog.ui | 229 ++++++++++--------- + 2 files changed, 199 insertions(+), 162 deletions(-) + +diff --git a/src/nautilus-compress-dialog-controller.c b/src/nautilus-compress-dialog-controller.c +index d8aa792ee..154573c0f 100644 +--- a/src/nautilus-compress-dialog-controller.c ++++ b/src/nautilus-compress-dialog-controller.c +@@ -19,6 +19,7 @@ + + #include + #include ++#include + + #include + +@@ -31,11 +32,15 @@ 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; ++ GtkWidget *extension_stack; ++ GtkWidget *zip_label; ++ GtkWidget *tar_xz_label; ++ GtkWidget *seven_zip_label; ++ GtkWidget *extension_popover; ++ GtkWidget *zip_checkmark; ++ GtkWidget *tar_xz_checkmark; ++ GtkWidget *seven_zip_checkmark; + + const char *extension; + +@@ -135,32 +140,32 @@ update_selected_format (NautilusCompressDialogController *self, + NautilusCompressionFormat format) + { + const char *extension; +- const char *description_label_name; +- GtkWidget *active_button; ++ GtkWidget *active_label; ++ GtkWidget *active_checkmark; + + switch (format) + { + case NAUTILUS_COMPRESSION_ZIP: + { + extension = ".zip"; +- description_label_name = "zip-description-label"; +- active_button = self->zip_radio_button; ++ active_label = self->zip_label; ++ active_checkmark = self->zip_checkmark; + } + break; + + case NAUTILUS_COMPRESSION_TAR_XZ: + { + extension = ".tar.xz"; +- description_label_name = "tar-xz-description-label"; +- active_button = self->tar_xz_radio_button; ++ active_label = self->tar_xz_label; ++ active_checkmark = self->tar_xz_checkmark; + } + break; + + case NAUTILUS_COMPRESSION_7ZIP: + { + extension = ".7z"; +- description_label_name = "seven-zip-description-label"; +- active_button = self->seven_zip_radio_button; ++ active_label = self->seven_zip_label; ++ active_checkmark = self->seven_zip_checkmark; + } + break; + +@@ -173,11 +178,21 @@ update_selected_format (NautilusCompressDialogController *self, + + 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); ++ gtk_stack_set_visible_child (GTK_STACK (self->extension_stack), ++ active_label); ++ ++ gtk_image_set_from_icon_name (GTK_IMAGE (self->zip_checkmark), ++ NULL, ++ GTK_ICON_SIZE_BUTTON); ++ gtk_image_set_from_icon_name (GTK_IMAGE (self->tar_xz_checkmark), ++ NULL, ++ GTK_ICON_SIZE_BUTTON); ++ gtk_image_set_from_icon_name (GTK_IMAGE (self->seven_zip_checkmark), ++ NULL, ++ GTK_ICON_SIZE_BUTTON); ++ gtk_image_set_from_icon_name (GTK_IMAGE (active_checkmark), ++ "object-select-symbolic", ++ GTK_ICON_SIZE_BUTTON); + + g_settings_set_enum (nautilus_compression_preferences, + NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT, +@@ -189,52 +204,40 @@ update_selected_format (NautilusCompressDialogController *self, + } + + static void +-zip_radio_button_on_toggled (GtkToggleButton *toggle_button, +- gpointer user_data) ++zip_row_on_activated (HdyActionRow *row, ++ gpointer user_data) + { + NautilusCompressDialogController *controller; + + controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); + +- if (!gtk_toggle_button_get_active (toggle_button)) +- { +- return; +- } +- ++ gtk_popover_popdown (GTK_POPOVER (controller->extension_popover)); + update_selected_format (controller, + NAUTILUS_COMPRESSION_ZIP); + } + + static void +-tar_xz_radio_button_on_toggled (GtkToggleButton *toggle_button, +- gpointer user_data) ++tar_xz_row_on_activated (HdyActionRow *row, ++ gpointer user_data) + { + NautilusCompressDialogController *controller; + + controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); + +- if (!gtk_toggle_button_get_active (toggle_button)) +- { +- return; +- } +- ++ gtk_popover_popdown (GTK_POPOVER (controller->extension_popover)); + update_selected_format (controller, + NAUTILUS_COMPRESSION_TAR_XZ); + } + + static void +-seven_zip_radio_button_on_toggled (GtkToggleButton *toggle_button, +- gpointer user_data) ++seven_zip_row_on_activated (HdyActionRow *row, ++ gpointer user_data) + { + NautilusCompressDialogController *controller; + + controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data); + +- if (!gtk_toggle_button_get_active (toggle_button)) +- { +- return; +- } +- ++ gtk_popover_popdown (GTK_POPOVER (controller->extension_popover)); + update_selected_format (controller, + NAUTILUS_COMPRESSION_7ZIP); + } +@@ -251,10 +254,14 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + 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; ++ GtkWidget *extension_stack; ++ GtkWidget *zip_label; ++ GtkWidget *tar_xz_label; ++ GtkWidget *seven_zip_label; ++ GtkWidget *extension_popover; ++ GtkWidget *zip_checkmark; ++ GtkWidget *tar_xz_checkmark; ++ GtkWidget *seven_zip_checkmark; + NautilusCompressionFormat format; + + builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/ui/nautilus-compress-dialog.ui"); +@@ -263,10 +270,14 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + 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")); ++ extension_stack = GTK_WIDGET (gtk_builder_get_object (builder, "extension_stack")); ++ zip_label = GTK_WIDGET (gtk_builder_get_object (builder, "zip_label")); ++ tar_xz_label = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_label")); ++ seven_zip_label = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_label")); ++ extension_popover = GTK_WIDGET (gtk_builder_get_object (builder, "extension_popover")); ++ zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "zip_checkmark")); ++ tar_xz_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_checkmark")); ++ seven_zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_checkmark")); + + gtk_window_set_transient_for (GTK_WINDOW (compress_dialog), + parent_window); +@@ -279,10 +290,15 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + "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->extension_stack = extension_stack; ++ self->zip_label = zip_label; ++ self->tar_xz_label = tar_xz_label; ++ self->seven_zip_label = seven_zip_label; ++ self->name_entry = name_entry; ++ self->extension_popover = extension_popover; ++ self->zip_checkmark = zip_checkmark; ++ self->tar_xz_checkmark = tar_xz_checkmark; ++ self->seven_zip_checkmark = seven_zip_checkmark; + self->name_entry = name_entry; + + self->response_handler_id = g_signal_connect (compress_dialog, +@@ -291,20 +307,18 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + 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), ++ "zip_row_on_activated", ++ G_CALLBACK (zip_row_on_activated), ++ "tar_xz_row_on_activated", ++ G_CALLBACK (tar_xz_row_on_activated), ++ "seven_zip_row_on_activated", ++ G_CALLBACK (seven_zip_row_on_activated), + 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); +@@ -312,6 +326,8 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window, + + gtk_widget_show_all (compress_dialog); + ++ update_selected_format (self, format); ++ + return self; + } + +diff --git a/src/resources/ui/nautilus-compress-dialog.ui b/src/resources/ui/nautilus-compress-dialog.ui +index 526e9eed2..b36539294 100644 +--- a/src/resources/ui/nautilus-compress-dialog.ui ++++ b/src/resources/ui/nautilus-compress-dialog.ui +@@ -1,6 +1,70 @@ + + + ++ ++ bottom ++ none ++ ++ ++ True ++ 12 ++ 12 ++ 12 ++ 12 ++ ++ ++ True ++ True ++ .zip ++ Compatible with all operating systems. ++ ++ ++ ++ True ++ 16 ++ 12 ++ 12 ++ ++ ++ ++ ++ ++ ++ True ++ True ++ .tar.xz ++ Smaller archives but Linux and Mac only. ++ ++ ++ ++ True ++ 16 ++ 12 ++ 12 ++ ++ ++ ++ ++ ++ ++ True ++ True ++ .7z ++ Smaller archives but must be installed on Windows and Mac. ++ ++ ++ ++ True ++ 16 ++ 12 ++ 12 ++ ++ ++ ++ ++ ++ ++ + + Create Archive + False +@@ -9,19 +73,26 @@ + True + dialog + 1 ++ 500 ++ 210 + + + vertical +- 18 +- 12 +- 18 +- 18 ++ 30 ++ 30 ++ 30 ++ 30 ++ 390 ++ center + 6 + + + Archive name + True + 0 ++ ++ ++ + + + False +@@ -30,132 +101,82 @@ + + + +- +- True +- True +- +- +- False +- True +- 2 +- +- +- +- +- +- +- 4 +- 4 +- True +- 0 +- +- +- +- +- False +- True +- 3 +- +- +- +- ++ + horizontal +- True +- 0 +- +- +- .zip +- True +- +- +- +- True +- True +- 0 +- +- ++ 12 + +- +- .tar.xz +- zip_radio_button +- True +- ++ ++ True ++ True ++ 30 + + + True +- True +- 1 + + + +- +- .7z +- zip_radio_button +- True +- ++ ++ extension_popover ++ ++ ++ horizontal ++ 6 ++ ++ ++ ++ ++ .zip ++ 0 ++ ++ ++ ++ ++ .tar.xz ++ 0 ++ ++ ++ ++ ++ .7z ++ 0 ++ ++ ++ ++ ++ True ++ ++ ++ ++ ++ pan-down-symbolic ++ ++ ++ ++ + +- +- True +- True +- 2 +- + + + + False + True +- 4 ++ 2 + + + +- +- 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 +- +- ++ + +- ++ ++ 4 ++ 4 + True +- Smaller archives but must be installed on Windows and Mac. + 0 +- + +- +- seven-zip-description-label +- + + + + False + True +- 5 ++ 3 + + + +-- +2.31.1 + diff --git a/SOURCES/compress-dialog-controller-Fit-popover-fit-on-X11.patch b/SOURCES/compress-dialog-controller-Fit-popover-fit-on-X11.patch new file mode 100644 index 0000000..8e0435b --- /dev/null +++ b/SOURCES/compress-dialog-controller-Fit-popover-fit-on-X11.patch @@ -0,0 +1,52 @@ +From 203d24f1e57991340b2870b0b956922144f0152a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ant=C3=B3nio=20Fernandes?= +Date: Mon, 8 Nov 2021 18:48:47 +0000 +Subject: [PATCH] compress-dialog-controller: Fit popover fit on X11 + +Under X11, GTK3 cannot draw a GtkPopover outside of the main window area. + +This means the popover for compress formats is clipped under X11. + +As a workaround, make the window twice as tal when the popover is shown. + +Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/2018 +--- + src/nautilus-compress-dialog-controller.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/src/nautilus-compress-dialog-controller.c b/src/nautilus-compress-dialog-controller.c +index 3f7711ccb..de83b3717 100644 +--- a/src/nautilus-compress-dialog-controller.c ++++ b/src/nautilus-compress-dialog-controller.c +@@ -21,6 +21,10 @@ + #include + #include + ++#ifdef GDK_WINDOWING_X11 ++#include ++#endif ++ + #include + + #include "nautilus-compress-dialog-controller.h" +@@ -394,6 +398,17 @@ popover_on_show (GtkWidget *widget, + } + break; + } ++ ++#ifdef GDK_WINDOWING_X11 ++ if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) ++ { ++ int w, h; ++ ++ /* Workaround for https://gitlab.gnome.org/GNOME/nautilus/-/issues/2018 */ ++ gtk_window_get_default_size (GTK_WINDOW (self->compress_dialog), &w, &h); ++ gtk_window_resize (GTK_WINDOW (self->compress_dialog), w, h * 2); ++ } ++#endif + } + + NautilusCompressDialogController * +-- +2.33.1 + diff --git a/SOURCES/file-operations-Do-not-offer-skipping-when-extractin.patch b/SOURCES/file-operations-Do-not-offer-skipping-when-extractin.patch new file mode 100644 index 0000000..bac9fe8 --- /dev/null +++ b/SOURCES/file-operations-Do-not-offer-skipping-when-extractin.patch @@ -0,0 +1,113 @@ +From d4e00000d46e0407841424a478eab833cf59cc12 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Fri, 24 Sep 2021 09:42:54 +0200 +Subject: [PATCH] file-operations: Do not offer skipping when extracting one + file + +In case of extraction failure, the "Skip" and "Cancel" actions are offered +everytime, but skipping doesn't make sense when extracting one file only. +Let's use the same approach as it is used also for other operations, which +is based on total number of files and remaining files. Also the "Skip All" +action will be offered as a side-effect of this change. +--- + src/nautilus-file-operations.c | 38 ++++++++++++++++++++++------------ + 1 file changed, 25 insertions(+), 13 deletions(-) + +diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c +index 14dcf64d0..c95748ccc 100644 +--- a/src/nautilus-file-operations.c ++++ b/src/nautilus-file-operations.c +@@ -210,6 +210,7 @@ typedef struct + + guint64 archive_compressed_size; + guint64 total_compressed_size; ++ gint total_files; + + NautilusExtractCallback done_callback; + gpointer done_callback_data; +@@ -8332,6 +8333,7 @@ extract_job_on_error (AutoarExtractor *extractor, + GFile *source_file; + GFile *destination; + gint response_id; ++ gint remaining_files; + g_autofree gchar *basename = NULL; + + source_file = autoar_extractor_get_source_file (extractor); +@@ -8357,25 +8359,35 @@ extract_job_on_error (AutoarExtractor *extractor, + g_object_unref (destination); + } + ++ if (extract_job->common.skip_all_error) ++ { ++ 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); ++ remaining_files = g_list_length (g_list_find_custom (extract_job->source_files, ++ source_file, ++ (GCompareFunc) g_file_equal)) - 1; ++ response_id = run_cancel_or_skip_warning ((CommonJob *) extract_job, ++ g_strdup_printf (_("There was an error while extracting “%s”."), ++ basename), ++ g_strdup (error->message), ++ NULL, ++ extract_job->total_files, ++ remaining_files); + + if (response_id == 0 || response_id == GTK_RESPONSE_DELETE_EVENT) + { + abort_job ((CommonJob *) extract_job); + } ++ else if (response_id == 1) ++ { ++ extract_job->common.skip_all_error = TRUE; ++ } + } + + static void +@@ -8607,7 +8619,6 @@ extract_task_thread_func (GTask *task, + { + ExtractJob *extract_job = task_data; + GList *l; +- gint total_files; + g_autofree guint64 *archive_compressed_sizes = NULL; + gint i; + +@@ -8618,9 +8629,10 @@ extract_task_thread_func (GTask *task, + nautilus_progress_info_set_details (extract_job->common.progress, + _("Preparing to extract")); + +- total_files = g_list_length (extract_job->source_files); ++ extract_job->total_files = g_list_length (extract_job->source_files); + +- archive_compressed_sizes = g_malloc0_n (total_files, sizeof (guint64)); ++ archive_compressed_sizes = g_malloc0_n (extract_job->total_files, ++ sizeof (guint64)); + extract_job->total_compressed_size = 0; + + for (l = extract_job->source_files, i = 0; +@@ -8691,7 +8703,7 @@ extract_task_thread_func (GTask *task, + + if (!job_aborted ((CommonJob *) extract_job)) + { +- report_extract_final_progress (extract_job, total_files); ++ report_extract_final_progress (extract_job, extract_job->total_files); + } + + if (extract_job->common.undo_info) +-- +2.33.1 + diff --git a/SOURCES/file-operations-Fix-progress-when-skipping-during-ex.patch b/SOURCES/file-operations-Fix-progress-when-skipping-during-ex.patch new file mode 100644 index 0000000..c49ce92 --- /dev/null +++ b/SOURCES/file-operations-Fix-progress-when-skipping-during-ex.patch @@ -0,0 +1,113 @@ +From c3b8e0d6dee8ae8d86cbc47a0745b3e9b2b814e7 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Fri, 24 Sep 2021 09:56:07 +0200 +Subject: [PATCH] file-operations: Fix progress when skipping during extraction + +The progress is wrong when extracting multiple files and some of them +are skipped. Let's try to fix this. +--- + src/nautilus-file-operations.c | 35 ++++++++++++++++++++++++++-------- + 1 file changed, 27 insertions(+), 8 deletions(-) + +diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c +index c95748ccc..5fc8af2f3 100644 +--- a/src/nautilus-file-operations.c ++++ b/src/nautilus-file-operations.c +@@ -205,6 +205,7 @@ typedef struct + GFile *destination_directory; + GList *output_files; + gboolean destination_decided; ++ gboolean extraction_failed; + + gdouble base_progress; + +@@ -8346,6 +8347,8 @@ extract_job_on_error (AutoarExtractor *extractor, + return; + } + ++ extract_job->extraction_failed = TRUE; ++ + /* It is safe to use extract_job->output_files->data only when the + * extract_job->destination_decided variable was set, see comment in the + * extract_job_on_decide_destination function. +@@ -8571,8 +8574,7 @@ extract_job_on_scanned (AutoarExtractor *extractor, + } + + static void +-report_extract_final_progress (ExtractJob *extract_job, +- gint total_files) ++report_extract_final_progress (ExtractJob *extract_job) + { + char *status; + g_autofree gchar *basename_dest = NULL; +@@ -8582,7 +8584,11 @@ report_extract_final_progress (ExtractJob *extract_job, + extract_job->destination_directory); + basename_dest = get_basename (extract_job->destination_directory); + +- if (total_files == 1) ++ /* The g_list_length function is used intentionally here instead of the ++ * extract_job->total_files variable to avoid printing wrong basename in ++ * the case of skipped files. ++ */ ++ if (g_list_length (extract_job->source_files) == 1) + { + GFile *source_file; + g_autofree gchar *basename = NULL; +@@ -8597,8 +8603,8 @@ report_extract_final_progress (ExtractJob *extract_job, + { + status = g_strdup_printf (ngettext ("Extracted %'d file to “%s”", + "Extracted %'d files to “%s”", +- total_files), +- total_files, ++ extract_job->total_files), ++ extract_job->total_files, + basename_dest); + } + +@@ -8609,6 +8615,8 @@ report_extract_final_progress (ExtractJob *extract_job, + g_strdup_printf (_("%s / %s"), + formatted_size, + formatted_size)); ++ ++ nautilus_progress_info_set_progress (extract_job->common.progress, 1, 1); + } + + static void +@@ -8690,6 +8698,7 @@ extract_task_thread_func (GTask *task, + + extract_job->archive_compressed_size = archive_compressed_sizes[i]; + extract_job->destination_decided = FALSE; ++ extract_job->extraction_failed = FALSE; + + autoar_extractor_start (extractor, + extract_job->common.cancellable); +@@ -8697,13 +8706,23 @@ extract_task_thread_func (GTask *task, + 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 (!extract_job->extraction_failed) ++ { ++ extract_job->base_progress += (gdouble) extract_job->archive_compressed_size / ++ (gdouble) extract_job->total_compressed_size; ++ } ++ else ++ { ++ extract_job->total_files--; ++ extract_job->base_progress *= extract_job->total_compressed_size; ++ extract_job->total_compressed_size -= extract_job->archive_compressed_size; ++ extract_job->base_progress /= extract_job->total_compressed_size; ++ } + } + + if (!job_aborted ((CommonJob *) extract_job)) + { +- report_extract_final_progress (extract_job, extract_job->total_files); ++ report_extract_final_progress (extract_job); + } + + if (extract_job->common.undo_info) +-- +2.33.1 + diff --git a/SOURCES/file-operations-Remove-leftover-files-after-extracti.patch b/SOURCES/file-operations-Remove-leftover-files-after-extracti.patch new file mode 100644 index 0000000..eeec323 --- /dev/null +++ b/SOURCES/file-operations-Remove-leftover-files-after-extracti.patch @@ -0,0 +1,70 @@ +From d09b34cde210c4f817d2442cc9378b1ddf73aee9 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Fri, 24 Sep 2021 08:40:23 +0200 +Subject: [PATCH] file-operations: Remove leftover files after extraction + failure + +Empty, or corrupted files are left in the output directory in the case +of extraction failure, e.g. when wrong password is supplied. This is +in most cases undesired. Let's recursively delete all the leftover +files in the case of extraction failure. + +Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/1954 +--- + src/nautilus-file-operations.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c +index 7927bd504..13da2cb39 100644 +--- a/src/nautilus-file-operations.c ++++ b/src/nautilus-file-operations.c +@@ -204,6 +204,7 @@ typedef struct + GList *source_files; + GFile *destination_directory; + GList *output_files; ++ gboolean destination_decided; + + gdouble base_progress; + +@@ -8202,8 +8203,14 @@ extract_job_on_decide_destination (AutoarExtractor *extractor, + return NULL; + } + ++ /* The extract_job->destination_decided variable signalizes whether the ++ * extract_job->output_files list already contains the final location as ++ * its first link. There is no way to get this over the AutoarExtractor ++ * API currently. ++ */ + extract_job->output_files = g_list_prepend (extract_job->output_files, + decided_destination); ++ extract_job->destination_decided = TRUE; + + return g_object_ref (decided_destination); + } +@@ -8336,6 +8343,15 @@ extract_job_on_error (AutoarExtractor *extractor, + return; + } + ++ /* It is safe to use extract_job->output_files->data only when the ++ * extract_job->destination_decided variable was set, see comment in the ++ * extract_job_on_decide_destination function. ++ */ ++ if (extract_job->destination_decided) ++ { ++ delete_file_recursively (extract_job->output_files->data, NULL, NULL, NULL); ++ } ++ + basename = get_basename (source_file); + nautilus_progress_info_take_status (extract_job->common.progress, + g_strdup_printf (_("Error extracting “%s”"), +@@ -8657,6 +8673,7 @@ extract_task_thread_func (GTask *task, + extract_job); + + extract_job->archive_compressed_size = archive_compressed_sizes[i]; ++ extract_job->destination_decided = FALSE; + + autoar_extractor_start (extractor, + extract_job->common.cancellable); +-- +2.33.1 + diff --git a/SOURCES/file-operations-Simplify-output-files-handling-when-.patch b/SOURCES/file-operations-Simplify-output-files-handling-when-.patch new file mode 100644 index 0000000..f31efef --- /dev/null +++ b/SOURCES/file-operations-Simplify-output-files-handling-when-.patch @@ -0,0 +1,74 @@ +From bdd317d999458fc35b23ee9c6141a9d0c9ec66f7 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Fri, 24 Sep 2021 08:45:27 +0200 +Subject: [PATCH] file-operations: Simplify output files handling when + extracting + +Currently, output files are checked for existence. But the files are +explicitely deleted in the case of extraction failure, so this extra +check is no more needed. Let's drop the redundant check and just update +the list when deleting the files. +--- + src/nautilus-file-operations.c | 25 ++++++------------------- + 1 file changed, 6 insertions(+), 19 deletions(-) + +diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c +index 13da2cb39..14dcf64d0 100644 +--- a/src/nautilus-file-operations.c ++++ b/src/nautilus-file-operations.c +@@ -8330,6 +8330,7 @@ extract_job_on_error (AutoarExtractor *extractor, + { + ExtractJob *extract_job = user_data; + GFile *source_file; ++ GFile *destination; + gint response_id; + g_autofree gchar *basename = NULL; + +@@ -8349,7 +8350,11 @@ extract_job_on_error (AutoarExtractor *extractor, + */ + if (extract_job->destination_decided) + { +- delete_file_recursively (extract_job->output_files->data, NULL, NULL, NULL); ++ destination = extract_job->output_files->data; ++ delete_file_recursively (destination, NULL, NULL, NULL); ++ extract_job->output_files = g_list_delete_link (extract_job->output_files, ++ extract_job->output_files); ++ g_object_unref (destination); + } + + basename = get_basename (source_file); +@@ -8602,7 +8607,6 @@ extract_task_thread_func (GTask *task, + { + ExtractJob *extract_job = task_data; + GList *l; +- GList *existing_output_files = NULL; + gint total_files; + g_autofree guint64 *archive_compressed_sizes = NULL; + gint i; +@@ -8690,23 +8694,6 @@ extract_task_thread_func (GTask *task, + 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) +-- +2.33.1 + diff --git a/SOURCES/files-view-Store-selected-files-list-for-compressing.patch b/SOURCES/files-view-Store-selected-files-list-for-compressing.patch new file mode 100644 index 0000000..700fc3f --- /dev/null +++ b/SOURCES/files-view-Store-selected-files-list-for-compressing.patch @@ -0,0 +1,117 @@ +From 67c7bdbf8757c51d3b1bc1f5c40eaeddef9e3a89 Mon Sep 17 00:00:00 2001 +From: Anubhav Tyagi +Date: Sat, 17 Jul 2021 12:39:20 +0530 +Subject: [PATCH] files-view: Store selected files list for compressing + +The selected files list is chosen after the user confirmed the compress +operation in the compress-dialog which may result in files other than +chosen file being compressed. + +Store the list of selected files when the user chooses the "Compress" +option from the menu, to avoid that + +Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/1900 + + +(cherry picked from commit 6c7eacd20302046521e89dd28240c6b0193ba942) +--- + src/nautilus-files-view.c | 37 +++++++++++++++++++++++++++---------- + 1 file changed, 27 insertions(+), 10 deletions(-) + +diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c +index 378e6bdba..b4a91226b 100644 +--- a/src/nautilus-files-view.c ++++ b/src/nautilus-files-view.c +@@ -302,6 +302,12 @@ typedef struct + NautilusDirectory *directory; + } FileAndDirectory; + ++typedef struct ++{ ++ NautilusFilesView *view; ++ GList *selection; ++} CompressCallbackData; ++ + /* forward declarations */ + + static gboolean display_selection_info_idle_callback (gpointer data); +@@ -2217,9 +2223,9 @@ static void + compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *controller, + gpointer user_data) + { ++ CompressCallbackData *callback_data = user_data; + NautilusFilesView *view; + g_autofree gchar *name = NULL; +- GList *selection; + GList *source_files = NULL; + GList *l; + CompressData *data; +@@ -2230,12 +2236,10 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c + AutoarFormat format; + AutoarFilter filter; + +- view = NAUTILUS_FILES_VIEW (user_data); ++ view = NAUTILUS_FILES_VIEW (callback_data->view); + 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) ++ for (l = callback_data->selection; l != NULL; l = l->next) + { + source_files = g_list_prepend (source_files, + nautilus_file_get_location (l->data)); +@@ -2302,7 +2306,6 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c + compress_done, + data); + +- nautilus_file_list_free (selection); + g_list_free_full (source_files, g_object_unref); + g_clear_object (&priv->compress_controller); + } +@@ -2320,6 +2323,12 @@ compress_dialog_controller_on_cancelled (NautilusNewFolderDialogController *cont + g_clear_object (&priv->compress_controller); + } + ++static void ++compress_callback_data_free (CompressCallbackData *data) ++{ ++ nautilus_file_list_free (data->selection); ++ g_free (data); ++} + + static void + nautilus_files_view_compress_dialog_new (NautilusFilesView *view) +@@ -2328,6 +2337,7 @@ nautilus_files_view_compress_dialog_new (NautilusFilesView *view) + NautilusFilesViewPrivate *priv; + g_autolist (NautilusFile) selection = NULL; + g_autofree char *common_prefix = NULL; ++ CompressCallbackData *data; + + priv = nautilus_files_view_get_instance_private (view); + +@@ -2365,10 +2375,17 @@ nautilus_files_view_compress_dialog_new (NautilusFilesView *view) + containing_directory, + common_prefix); + +- g_signal_connect (priv->compress_controller, +- "name-accepted", +- (GCallback) compress_dialog_controller_on_name_accepted, +- view); ++ data = g_new0 (CompressCallbackData, 1); ++ data->view = view; ++ data->selection = nautilus_files_view_get_selection_for_file_transfer (view); ++ ++ g_signal_connect_data (priv->compress_controller, ++ "name-accepted", ++ (GCallback) compress_dialog_controller_on_name_accepted, ++ data, ++ (GClosureNotify) compress_callback_data_free, ++ G_CONNECT_AFTER); ++ + g_signal_connect (priv->compress_controller, + "cancelled", + (GCallback) compress_dialog_controller_on_cancelled, +-- +2.31.1 + diff --git a/SPECS/nautilus.spec b/SPECS/nautilus.spec index 0b2c439..164a834 100644 --- a/SPECS/nautilus.spec +++ b/SPECS/nautilus.spec @@ -1,21 +1,33 @@ %global glib2_version 2.67.1 -%global gnome_autoar_version 0.3.0 +%global gnome_autoar_version 0.4.0 %global gtk3_version 3.22.27 %global tarball_version %%(echo %{version} | tr '~' '.') Name: nautilus -Version: 40.1 -Release: 4%{?dist} +Version: 40.2 +Release: 6%{?dist} Summary: File manager for GNOME License: GPLv3+ URL: https://wiki.gnome.org/Apps/Nautilus Source0: https://download.gnome.org/sources/%{name}/40/%{name}-%{tarball_version}.tar.xz -# Backported from upstream -# https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/664 -Patch0: 664.patch +Patch0: files-view-Store-selected-files-list-for-compressing.patch +Patch1: compress-dialog-Update-dialog-design.patch +Patch2: compress-dialog-Add-support-for-encrypted-.zip.patch +Patch3: compress-dialog-Backport-translations.patch + +# https://gitlab.gnome.org/GNOME/nautilus/-/issues/1954 +Patch4: file-operations-Remove-leftover-files-after-extracti.patch +Patch5: file-operations-Simplify-output-files-handling-when-.patch +Patch6: file-operations-Do-not-offer-skipping-when-extractin.patch +Patch7: file-operations-Fix-progress-when-skipping-during-ex.patch + +# https://gitlab.gnome.org/GNOME/nautilus/-/issues/1944 +# https://gitlab.gnome.org/GNOME/nautilus/-/issues/2018 +Patch8: compress-dialog-Set-keyboard-focus-on-the-row-with-t.patch +Patch9: compress-dialog-controller-Fit-popover-fit-on-X11.patch BuildRequires: desktop-file-utils BuildRequires: gcc @@ -147,6 +159,24 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop %doc %{_datadir}/gtk-doc/html/libnautilus-extension/ %changelog +* Fri Dec 10 2021 Ondrej Holy - 40.2-6 +- Update Persian translation from upstream (#2003134) + +* Wed Dec 08 2021 Ondrej Holy - 40.2-5 +- Backport various upstream fixes for compress formats popover (#2029423) + +* Wed Dec 08 2021 Ondrej Holy - 40.2-4 +- Backport various upstream fixes for archive extraction (#1995615) + +* Fri Sep 17 2021 Ondrej Holy - 40.2-3 +- Backport translations for encrypted archives support (#2003134) + +* Tue Aug 10 2021 Ondrej Holy - 40.2-2 +- Add support for creation of password-protected archives (#1991575) + +* Tue Aug 10 2021 Ondrej Holy - 40.2-1 +- Update to 40.2 (#1991433) + * Mon Aug 09 2021 Mohan Boddu - 40.1-4 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688