Compare commits

...

No commits in common. 'cs10' and 'c9' have entirely different histories.
cs10 ... c9

2
.gitignore vendored

@ -1 +1 @@
SOURCES/nautilus-47.0.tar.xz
SOURCES/nautilus-40.2.tar.xz

@ -1 +1 @@
aa94acacb79caeb288f07aa822385d6a6a48e652 SOURCES/nautilus-47.0.tar.xz
c1b959b40074dd0e8e2df8289c61a3abf5fa8d5a SOURCES/nautilus-40.2.tar.xz

@ -1,131 +0,0 @@
From f514545834b18a68d3818eebfe57de7df87700e8 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Thu, 8 Aug 2024 09:50:02 -0400
Subject: [PATCH] Revert "general: React to tracker projects rename"
This reverts commit 0e6e3946ebfcbaf1c7e2ebbb1300dd3a016ee0e9.
---
README.md | 2 +-
build-aux/flatpak/org.gnome.Nautilus.json | 8 ++++----
data/tracker/meson.build | 9 ++++-----
.../org.gnome.Nautilus.Tracker3.Miner.Extract.service.in | 4 ++--
.../org.gnome.Nautilus.Tracker3.Miner.Files.service.in | 4 ++--
src/nautilus-tag-manager.c | 4 ++--
6 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/README.md b/README.md
index a726662b3..090a76a47 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
## Runtime dependencies
- [Bubblewrap](https://github.com/projectatomic/bubblewrap) installed. Used for security reasons.
-- [LocalSearch](https://gitlab.gnome.org/GNOME/localsearch) properly set up and with all features enabled. Used for fast search and metadata extraction, starred files and batch renaming.
+- [Tracker (including tracker-miners)](https://gitlab.gnome.org/GNOME/tracker) properly set up and with all features enabled. Used for fast search and metadata extraction, starred files and batch renaming.
## Discourse
diff --git a/build-aux/flatpak/org.gnome.Nautilus.json b/build-aux/flatpak/org.gnome.Nautilus.json
index ccf653829..362b933e0 100644
--- a/build-aux/flatpak/org.gnome.Nautilus.json
+++ b/build-aux/flatpak/org.gnome.Nautilus.json
@@ -72,11 +72,11 @@
]
},
{
- "name": "localsearch",
+ "name": "tracker-miners",
"buildsystem": "meson",
"cleanup": [
"/etc",
- "/libexec/localsearch-3",
+ "/libexec/tracker-3",
"/share/dbus-1/services/org.freedesktop.Tracker3.Miner.Extract.service",
"/share/dbus-1/services/org.freedesktop.Tracker3.Miner.Files.service",
"/share/dbus-1/services/org.freedesktop.Tracker3.Miner.Files.Control.service"
@@ -95,8 +95,8 @@
"sources": [
{
"type": "git",
- "url": "https://gitlab.gnome.org/GNOME/localsearch.git",
- "branch": "main"
+ "url": "https://gitlab.gnome.org/GNOME/tracker-miners.git",
+ "branch": "master"
}
]
},
diff --git a/data/tracker/meson.build b/data/tracker/meson.build
index 2921ca925..5320af164 100644
--- a/data/tracker/meson.build
+++ b/data/tracker/meson.build
@@ -1,12 +1,11 @@
-# Files needed for running LocalSearch (historically known as Tracker) inside
-# the Flatpak sandbox, for systems which don't have a suitable version of
-# LocalSearch in the host OS.
+# Files needed for running Tracker inside the Flatpak sandbox, for systems
+# which don't have a suitable version of Tracker in the host OS.
#
# We must export the .service files from the sandbox so they work on the
-# session bus. This means the LocalSearch domain name must correspond with the
+# session bus. This means the Tracker domain name must correspond with the
# application ID.
-domain_ontologies_dir = get_option('datadir') / 'localsearch3' / 'domain-ontologies'
+domain_ontologies_dir = get_option('datadir') / 'tracker3' / 'domain-ontologies'
dbus_services_dir = get_option('datadir') / 'dbus-1' / 'services'
tracker_domain_config = configuration_data()
diff --git a/data/tracker/org.gnome.Nautilus.Tracker3.Miner.Extract.service.in b/data/tracker/org.gnome.Nautilus.Tracker3.Miner.Extract.service.in
index 23ded4583..eb7a87aa6 100644
--- a/data/tracker/org.gnome.Nautilus.Tracker3.Miner.Extract.service.in
+++ b/data/tracker/org.gnome.Nautilus.Tracker3.Miner.Extract.service.in
@@ -1,7 +1,7 @@
[D-BUS Service]
Name=@application_id@.Tracker3.Miner.Extract
-Exec=/app/libexec/localsearch-extractor-3 --domain-ontology @domain_rule@
+Exec=/app/libexec/tracker-extract-3 --domain-ontology @domain_rule@
-# Miner details needed for localsearch-control
+# Miner details needed for tracker-control
Path=/org/freedesktop/Tracker3/Miner/Extract
NameSuffix=Miner.Files
diff --git a/data/tracker/org.gnome.Nautilus.Tracker3.Miner.Files.service.in b/data/tracker/org.gnome.Nautilus.Tracker3.Miner.Files.service.in
index d770619b3..4fa7371d1 100644
--- a/data/tracker/org.gnome.Nautilus.Tracker3.Miner.Files.service.in
+++ b/data/tracker/org.gnome.Nautilus.Tracker3.Miner.Files.service.in
@@ -1,7 +1,7 @@
[D-BUS Service]
Name=@application_id@.Tracker3.Miner.Files
-Exec=/app/libexec/localsearch-3 --domain-ontology @domain_rule@ --initial-sleep 0
+Exec=/app/libexec/tracker-miner-fs-3 --domain-ontology @domain_rule@ --initial-sleep 0
-# Miner details needed for localsearch-control
+# Miner details needed for tracker-control
Path=/org/freedesktop/Tracker3/Miner/Files
NameSuffix=Miner.Files
diff --git a/src/nautilus-tag-manager.c b/src/nautilus-tag-manager.c
index 4c1da5ec5..b946225e3 100644
--- a/src/nautilus-tag-manager.c
+++ b/src/nautilus-tag-manager.c
@@ -955,7 +955,7 @@ child_watch_cb (GPid pid,
static void
export_tracker2_data (NautilusTagManager *self)
{
- gchar *argv[] = {"tinysparql3", "export", "--2to3", "files-starred", "--keyfile", NULL};
+ gchar *argv[] = {"tracker3", "export", "--2to3", "files-starred", "--keyfile", NULL};
gint stdout_fd;
GPid child_pid;
g_autoptr (GError) error = NULL;
@@ -979,7 +979,7 @@ export_tracker2_data (NautilusTagManager *self)
&error);
if (!success)
{
- g_warning ("Tracker 2 migration: Couldn't run `tinysparql3`: %s", error->message);
+ g_warning ("Tracker 2 migration: Couldn't run `tracker3`: %s", error->message);
return;
}
--
2.46.0

@ -1,23 +0,0 @@
From 39edbf3582c835a36d5c0b5d13f3c14fea7b960f Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Thu, 8 Aug 2024 10:03:13 -0400
Subject: [PATCH 2/2] Revert "test: Update to localsearch CLI rename"
This reverts commit 9fdcb225fb1b4c8fc2df06df5f70f43809aeed0d.
---
test/automated/displayless/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/automated/displayless/meson.build b/test/automated/displayless/meson.build
index d0a70e1d6..13616a260 100644
--- a/test/automated/displayless/meson.build
+++ b/test/automated/displayless/meson.build
@@ -1,4 +1,4 @@
-tracker_sandbox = find_program('localsearch')
+tracker_sandbox = find_program('localsearch3')
tests = [
['test-directory', [
--
2.46.0

@ -1,34 +0,0 @@
From 458b58d35a8234cadd7a4f3d5bfb71f14d613d3a Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Thu, 8 Aug 2024 10:13:05 -0400
Subject: [PATCH 3/3] Revert "tests: Use localsearch3 test-sandbox"
This reverts commit 25f445f4d7f38f501090cca88566ffd319d69463.
---
test/automated/displayless/meson.build | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/test/automated/displayless/meson.build b/test/automated/displayless/meson.build
index 13616a260..9d50c5084 100644
--- a/test/automated/displayless/meson.build
+++ b/test/automated/displayless/meson.build
@@ -1,4 +1,6 @@
-tracker_sandbox = find_program('localsearch3')
+trackertestutils = dependency('tracker-testutils-3.0')
+
+tracker_sandbox = find_program(trackertestutils.get_variable('command'))
tests = [
['test-directory', [
@@ -73,7 +75,7 @@ foreach t: tracker_tests
test(
t[0],
tracker_sandbox,
- args: ['test-sandbox', '--store-tmpdir', '--index-recursive-tmpdir', test_exe],
+ args: ['--store-tmpdir', '--index-recursive-tmpdir', test_exe],
env: [
test_env,
'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()),
--
2.46.0

@ -0,0 +1,92 @@
From 5b40335c34a3b920348633274a03d073d1338a09 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Mon, 9 Jan 2023 13:12:17 +0100
Subject: [PATCH] Revert "application: add common startup code"
This reverts commit 23ae53870a39afe43548111b6432db39511a6e97. This
change was needed for split of desktop-related functionality, but it
seems no more needed to me. Let's revert those changes to make the
code a bit easier as a preparation for the next commits.
---
src/nautilus-application.c | 32 ++++++--------------------------
src/nautilus-application.h | 1 -
2 files changed, 6 insertions(+), 27 deletions(-)
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index 5deae5cc9..9cc435ec3 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -1298,9 +1298,10 @@ icon_theme_changed_callback (GtkIconTheme *icon_theme,
emit_change_signals_for_all_files_in_all_directories ();
}
-void
-nautilus_application_startup_common (NautilusApplication *self)
+static void
+nautilus_application_startup (GApplication *app)
{
+ NautilusApplication *self = NAUTILUS_APPLICATION (app);
NautilusApplicationPrivate *priv;
nautilus_profile_start (NULL);
@@ -1319,6 +1320,9 @@ nautilus_application_startup_common (NautilusApplication *self)
setup_theme_extensions ();
+ /* create DBus manager */
+ priv->fdb_manager = nautilus_freedesktop_dbus_new ();
+
/* initialize preferences and create the global GSettings objects */
nautilus_global_preferences_init ();
@@ -1352,22 +1356,6 @@ nautilus_application_startup_common (NautilusApplication *self)
NULL, 0);
}
-static void
-nautilus_application_startup (GApplication *app)
-{
- NautilusApplication *self = NAUTILUS_APPLICATION (app);
- NautilusApplicationPrivate *priv;
-
- nautilus_profile_start (NULL);
- priv = nautilus_application_get_instance_private (self);
-
- /* create DBus manager */
- priv->fdb_manager = nautilus_freedesktop_dbus_new ();
- nautilus_application_startup_common (self);
-
- nautilus_profile_end (NULL);
-}
-
static gboolean
nautilus_application_dbus_register (GApplication *app,
GDBusConnection *connection,
@@ -1443,14 +1431,6 @@ update_dbus_opened_locations (NautilusApplication *self)
g_return_if_fail (NAUTILUS_IS_APPLICATION (self));
priv = nautilus_application_get_instance_private (self);
-
- /* Children of nautilus application could not handle the dbus, so don't
- * do anything in that case */
- if (!priv->fdb_manager)
- {
- return;
- }
-
dbus_object_path = g_application_get_dbus_object_path (G_APPLICATION (self));
g_return_if_fail (dbus_object_path);
diff --git a/src/nautilus-application.h b/src/nautilus-application.h
index f915b0d4d..d5cfc11b3 100644
--- a/src/nautilus-application.h
+++ b/src/nautilus-application.h
@@ -85,5 +85,4 @@ GtkWidget * nautilus_application_connect_server (NautilusApplication *applicatio
void nautilus_application_search (NautilusApplication *application,
NautilusQuery *query);
-void nautilus_application_startup_common (NautilusApplication *application);
G_END_DECLS
--
2.38.1

@ -0,0 +1,160 @@
From 7de08188d8d012d9aa8f49fe27b7992d081a7307 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Wed, 11 Jan 2023 09:44:25 +0100
Subject: [PATCH] Revert "freedesktop-dbus: Defer D-Bus property setting"
This reverts commit 3014f69485a120bedf0eec5af441346a95fe27f7 and part of
the commit a1751d3d870c6cdc092f893755623c4ff20e1ef3. This extra handling
was needed because `NautilusFreedesktopDBus` methods might be called before
establishing its own D-Bus connection. The follow-up commit is going to use
the already established connection from the `dbus_register` vfunc. It
should be ensured that the `dbus_register` vfunc is called before the
`window_added`, `window_removed`, or `startup` vfunc. Consequently, this
extra handling is going to be redundant. Let's remove it as a preparation
for the next commit.
---
src/nautilus-freedesktop-dbus.c | 79 ++-------------------------------
1 file changed, 3 insertions(+), 76 deletions(-)
diff --git a/src/nautilus-freedesktop-dbus.c b/src/nautilus-freedesktop-dbus.c
index 5cbbbad01..c75678399 100644
--- a/src/nautilus-freedesktop-dbus.c
+++ b/src/nautilus-freedesktop-dbus.c
@@ -40,11 +40,6 @@ struct _NautilusFreedesktopDBus
/* Our DBus implementation skeleton */
NautilusFreedesktopFileManager1 *skeleton;
-
- GStrv pending_open_locations;
- GVariant *pending_open_windows_with_locations;
-
- gboolean name_lost;
};
G_DEFINE_TYPE (NautilusFreedesktopDBus, nautilus_freedesktop_dbus, G_TYPE_OBJECT);
@@ -162,24 +157,6 @@ bus_acquired_cb (GDBusConnection *conn,
G_CALLBACK (skeleton_handle_show_item_properties_cb), fdb);
g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (fdb->skeleton), conn, NAUTILUS_FDO_DBUS_PATH, NULL);
-
- if (G_UNLIKELY (fdb->pending_open_locations != NULL))
- {
- g_auto (GStrv) locations = NULL;
-
- locations = g_steal_pointer (&fdb->pending_open_locations);
-
- nautilus_freedesktop_dbus_set_open_locations (fdb, (const gchar **) locations);
- }
-
- if (G_UNLIKELY (fdb->pending_open_windows_with_locations != NULL))
- {
- g_autoptr (GVariant) locations = NULL;
-
- locations = g_steal_pointer (&fdb->pending_open_windows_with_locations);
-
- nautilus_freedesktop_dbus_set_open_windows_with_locations (fdb, locations);
- }
}
static void
@@ -195,13 +172,7 @@ name_lost_cb (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
- NautilusFreedesktopDBus *fdb;
-
DEBUG ("Lost (or failed to acquire) the name %s on the session message bus\n", name);
-
- fdb = NAUTILUS_FREEDESKTOP_DBUS (user_data);
-
- fdb->name_lost = TRUE;
}
static void
@@ -225,24 +196,12 @@ nautilus_freedesktop_dbus_dispose (GObject *object)
G_OBJECT_CLASS (nautilus_freedesktop_dbus_parent_class)->dispose (object);
}
-static void
-nautilus_freedesktop_dbus_finalize (GObject *object)
-{
- NautilusFreedesktopDBus *fdb;
-
- fdb = NAUTILUS_FREEDESKTOP_DBUS (object);
-
- g_clear_pointer (&fdb->pending_open_locations, g_strfreev);
- g_clear_pointer (&fdb->pending_open_windows_with_locations, g_variant_unref);
-}
-
static void
nautilus_freedesktop_dbus_class_init (NautilusFreedesktopDBusClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = nautilus_freedesktop_dbus_dispose;
- object_class->finalize = nautilus_freedesktop_dbus_finalize;
}
static void
@@ -256,10 +215,6 @@ nautilus_freedesktop_dbus_init (NautilusFreedesktopDBus *fdb)
name_lost_cb,
fdb,
NULL);
- fdb->skeleton = NULL;
- fdb->pending_open_locations = NULL;
- fdb->pending_open_windows_with_locations = NULL;
- fdb->name_lost = FALSE;
}
void
@@ -268,21 +223,7 @@ nautilus_freedesktop_dbus_set_open_locations (NautilusFreedesktopDBus *fdb,
{
g_return_if_fail (NAUTILUS_IS_FREEDESKTOP_DBUS (fdb));
- if (G_UNLIKELY (fdb->skeleton == NULL))
- {
- if (G_LIKELY (fdb->name_lost))
- {
- return;
- }
-
- g_clear_pointer (&fdb->pending_open_locations, g_strfreev);
-
- fdb->pending_open_locations = g_strdupv ((gchar **) locations);
- }
- else
- {
- nautilus_freedesktop_file_manager1_set_open_locations (fdb->skeleton, locations);
- }
+ nautilus_freedesktop_file_manager1_set_open_locations (fdb->skeleton, locations);
}
/**
@@ -301,22 +242,8 @@ nautilus_freedesktop_dbus_set_open_windows_with_locations (NautilusFreedesktopDB
{
g_return_if_fail (NAUTILUS_IS_FREEDESKTOP_DBUS (fdb));
- if (G_UNLIKELY (fdb->skeleton == NULL))
- {
- if (G_LIKELY (fdb->name_lost))
- {
- return;
- }
-
- g_clear_pointer (&fdb->pending_open_windows_with_locations, g_variant_unref);
-
- fdb->pending_open_windows_with_locations = g_variant_ref (locations);
- }
- else
- {
- nautilus_freedesktop_file_manager1_set_open_windows_with_locations (fdb->skeleton,
- locations);
- }
+ nautilus_freedesktop_file_manager1_set_open_windows_with_locations (fdb->skeleton,
+ locations);
}
/* Tries to own the org.freedesktop.FileManager1 service name */
--
2.38.1

@ -0,0 +1,305 @@
From 1fa3039c67671fe53416b2575f3c305029ef4854 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Wed, 11 Jan 2023 09:55:41 +0100
Subject: [PATCH] application: Export FileManager1 iface from dbus_register
vfunc
The `org/freedesktop/FileManager1` interface is not currently exported
from the `dbus_register` vfunc. This causes issues for projects (e.g.
desktop-icons extension) that want to use all the Nautilus intefaces
over the `org.gnome.Nautilus` connection. Let's use the already established
connection and export the `FileManager1` interface from the `dbus_register`
vfunc.
https://bugzilla.redhat.com/show_bug.cgi?id=2150894
---
src/nautilus-application.c | 17 ++--
src/nautilus-freedesktop-dbus.c | 153 +++++++++++++++++++++++++-------
src/nautilus-freedesktop-dbus.h | 6 +-
3 files changed, 138 insertions(+), 38 deletions(-)
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index 9cc435ec3..16725932d 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -578,8 +578,6 @@ nautilus_application_finalize (GObject *object)
g_clear_object (&priv->progress_handler);
g_clear_object (&priv->bookmark_list);
- g_clear_object (&priv->fdb_manager);
-
g_list_free (priv->windows);
g_hash_table_destroy (priv->notifications);
@@ -1320,9 +1318,6 @@ nautilus_application_startup (GApplication *app)
setup_theme_extensions ();
- /* create DBus manager */
- priv->fdb_manager = nautilus_freedesktop_dbus_new ();
-
/* initialize preferences and create the global GSettings objects */
nautilus_global_preferences_init ();
@@ -1372,6 +1367,12 @@ nautilus_application_dbus_register (GApplication *app,
return FALSE;
}
+ priv->fdb_manager = nautilus_freedesktop_dbus_new (connection);
+ if (!nautilus_freedesktop_dbus_register (priv->fdb_manager, error))
+ {
+ return FALSE;
+ }
+
priv->search_provider = nautilus_shell_search_provider_new ();
if (!nautilus_shell_search_provider_register (priv->search_provider, connection, error))
{
@@ -1398,6 +1399,12 @@ nautilus_application_dbus_unregister (GApplication *app,
g_clear_object (&priv->dbus_manager);
}
+ if (priv->fdb_manager)
+ {
+ nautilus_freedesktop_dbus_unregister (priv->fdb_manager);
+ g_clear_object (&priv->fdb_manager);
+ }
+
if (priv->search_provider)
{
nautilus_shell_search_provider_unregister (priv->search_provider);
diff --git a/src/nautilus-freedesktop-dbus.c b/src/nautilus-freedesktop-dbus.c
index c75678399..c253cfaba 100644
--- a/src/nautilus-freedesktop-dbus.c
+++ b/src/nautilus-freedesktop-dbus.c
@@ -40,6 +40,14 @@ struct _NautilusFreedesktopDBus
/* Our DBus implementation skeleton */
NautilusFreedesktopFileManager1 *skeleton;
+
+ GDBusConnection *connection;
+};
+
+enum
+{
+ PROP_0,
+ PROP_CONNECTION,
};
G_DEFINE_TYPE (NautilusFreedesktopDBus, nautilus_freedesktop_dbus, G_TYPE_OBJECT);
@@ -138,27 +146,6 @@ skeleton_handle_show_item_properties_cb (NautilusFreedesktopFileManager1 *object
return TRUE;
}
-static void
-bus_acquired_cb (GDBusConnection *conn,
- const gchar *name,
- gpointer user_data)
-{
- NautilusFreedesktopDBus *fdb = user_data;
-
- DEBUG ("Bus acquired at %s", name);
-
- fdb->skeleton = nautilus_freedesktop_file_manager1_skeleton_new ();
-
- g_signal_connect (fdb->skeleton, "handle-show-items",
- G_CALLBACK (skeleton_handle_show_items_cb), fdb);
- g_signal_connect (fdb->skeleton, "handle-show-folders",
- G_CALLBACK (skeleton_handle_show_folders_cb), fdb);
- g_signal_connect (fdb->skeleton, "handle-show-item-properties",
- G_CALLBACK (skeleton_handle_show_item_properties_cb), fdb);
-
- g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (fdb->skeleton), conn, NAUTILUS_FDO_DBUS_PATH, NULL);
-}
-
static void
name_acquired_cb (GDBusConnection *connection,
const gchar *name,
@@ -175,6 +162,20 @@ name_lost_cb (GDBusConnection *connection,
DEBUG ("Lost (or failed to acquire) the name %s on the session message bus\n", name);
}
+static void
+nautilus_freedesktop_dbus_constructed (GObject *object)
+{
+ NautilusFreedesktopDBus *fdb = NAUTILUS_FREEDESKTOP_DBUS (object);
+
+ fdb->owner_id = g_bus_own_name_on_connection (fdb->connection,
+ NAUTILUS_FDO_DBUS_NAME,
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ name_acquired_cb,
+ name_lost_cb,
+ fdb,
+ NULL);
+}
+
static void
nautilus_freedesktop_dbus_dispose (GObject *object)
{
@@ -188,33 +189,87 @@ nautilus_freedesktop_dbus_dispose (GObject *object)
if (fdb->skeleton != NULL)
{
- g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (fdb->skeleton));
g_object_unref (fdb->skeleton);
fdb->skeleton = NULL;
}
+ g_clear_object (&fdb->connection);
+
G_OBJECT_CLASS (nautilus_freedesktop_dbus_parent_class)->dispose (object);
}
+static void
+nautilus_freedesktop_dbus_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ NautilusFreedesktopDBus *fdb = NAUTILUS_FREEDESKTOP_DBUS (object);
+
+ switch (prop_id)
+ {
+ case PROP_CONNECTION:
+ {
+ g_set_object (&fdb->connection, g_value_get_object (value));
+ }
+ break;
+
+ default:
+ {
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+ break;
+ }
+}
+
+static void
+nautilus_freedesktop_dbus_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ NautilusFreedesktopDBus *fdb = NAUTILUS_FREEDESKTOP_DBUS (object);
+
+ switch (prop_id)
+ {
+ case PROP_CONNECTION:
+ {
+ g_value_set_object (value, fdb->connection);
+ }
+ break;
+
+ default:
+ {
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+ break;
+ }
+}
+
static void
nautilus_freedesktop_dbus_class_init (NautilusFreedesktopDBusClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = nautilus_freedesktop_dbus_dispose;
+ object_class->constructed = nautilus_freedesktop_dbus_constructed;
+ object_class->get_property = nautilus_freedesktop_dbus_get_property;
+ object_class->set_property = nautilus_freedesktop_dbus_set_property;
+
+ g_object_class_install_property (object_class,
+ PROP_CONNECTION,
+ g_param_spec_object ("connection",
+ "Connection",
+ "GDBus connection property",
+ G_TYPE_DBUS_CONNECTION,
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READWRITE));
}
static void
nautilus_freedesktop_dbus_init (NautilusFreedesktopDBus *fdb)
{
- fdb->owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
- NAUTILUS_FDO_DBUS_NAME,
- G_BUS_NAME_OWNER_FLAGS_NONE,
- bus_acquired_cb,
- name_acquired_cb,
- name_lost_cb,
- fdb,
- NULL);
+ fdb->skeleton = nautilus_freedesktop_file_manager1_skeleton_new ();
}
void
@@ -248,7 +303,41 @@ nautilus_freedesktop_dbus_set_open_windows_with_locations (NautilusFreedesktopDB
/* Tries to own the org.freedesktop.FileManager1 service name */
NautilusFreedesktopDBus *
-nautilus_freedesktop_dbus_new (void)
+nautilus_freedesktop_dbus_new (GDBusConnection *connection)
+{
+ return g_object_new (NAUTILUS_TYPE_FREEDESKTOP_DBUS,
+ "connection", connection,
+ NULL);
+}
+
+gboolean
+nautilus_freedesktop_dbus_register (NautilusFreedesktopDBus *fdb,
+ GError **error)
+{
+ gboolean success;
+
+ success = g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (fdb->skeleton),
+ fdb->connection,
+ NAUTILUS_FDO_DBUS_PATH,
+ error);
+
+ if (success)
+ {
+ g_signal_connect (fdb->skeleton, "handle-show-items",
+ G_CALLBACK (skeleton_handle_show_items_cb), fdb);
+ g_signal_connect (fdb->skeleton, "handle-show-folders",
+ G_CALLBACK (skeleton_handle_show_folders_cb), fdb);
+ g_signal_connect (fdb->skeleton, "handle-show-item-properties",
+ G_CALLBACK (skeleton_handle_show_item_properties_cb), fdb);
+ }
+
+ return success;
+}
+
+void
+nautilus_freedesktop_dbus_unregister (NautilusFreedesktopDBus *fdb)
{
- return g_object_new (NAUTILUS_TYPE_FREEDESKTOP_DBUS, NULL);
+ g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (fdb->skeleton));
+
+ g_signal_handlers_disconnect_by_data (fdb->skeleton, fdb);
}
diff --git a/src/nautilus-freedesktop-dbus.h b/src/nautilus-freedesktop-dbus.h
index 416900eb9..8fb09e498 100644
--- a/src/nautilus-freedesktop-dbus.h
+++ b/src/nautilus-freedesktop-dbus.h
@@ -21,6 +21,7 @@
#pragma once
#include <glib-object.h>
+#include <gio/gio.h>
#define NAUTILUS_FDO_DBUS_IFACE "org.freedesktop.FileManager1"
#define NAUTILUS_FDO_DBUS_NAME "org.freedesktop.FileManager1"
@@ -30,7 +31,10 @@
G_DECLARE_FINAL_TYPE (NautilusFreedesktopDBus, nautilus_freedesktop_dbus, NAUTILUS, FREEDESKTOP_DBUS, GObject);
-NautilusFreedesktopDBus * nautilus_freedesktop_dbus_new (void);
+NautilusFreedesktopDBus * nautilus_freedesktop_dbus_new (GDBusConnection *connection);
+
+gboolean nautilus_freedesktop_dbus_register (NautilusFreedesktopDBus *fdb, GError **error);
+void nautilus_freedesktop_dbus_unregister (NautilusFreedesktopDBus *fdb);
void nautilus_freedesktop_dbus_set_open_locations (NautilusFreedesktopDBus *fdb, const gchar **locations);
--
2.38.1

@ -0,0 +1,611 @@
From 98c79d46ab05bd86fc1309d9ae560edc19f62071 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
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 @@
<value value="0" nick="zip"/>
<value value="1" nick="tar.xz"/>
<value value="2" nick="7z"/>
+ <value value="3" nick="encrypted_zip"/>
</enum>
<schema path="/org/gnome/nautilus/" id="org.gnome.nautilus" gettext-domain="nautilus">
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 @@
</child>
</object>
</child>
+ <child>
+ <object class="HdyActionRow" id="encrypted_zip_row">
+ <property name="visible">True</property>
+ <property name="activatable">True</property>
+ <property name="title" translatable="no">.zip</property>
+ <property name="subtitle" translatable="yes">Password protected .zip, must be installed on Windows and Mac.</property>
+ <signal name="activated" handler="encrypted_zip_row_on_activated"/>
+ <style>
+ <class name="encrypted_zip"/>
+ </style>
+ <child>
+ <object class="GtkImage" id="encrypted_zip_checkmark">
+ <property name="visible">True</property>
+ <property name="width-request">16</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
<child>
<object class="HdyActionRow">
<property name="visible">True</property>
@@ -129,6 +149,15 @@
<property name="xalign">0</property>
</object>
</child>
+ <child>
+ <object class="GtkLabel" id="encrypted_zip_label">
+ <property name="label" translatable="no">.zip</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="encrypted_zip"/>
+ </style>
+ </object>
+ </child>
<child>
<object class="GtkLabel" id="tar_xz_label">
<property name="label" translatable="no">.tar.xz</property>
@@ -179,6 +208,33 @@
<property name="position">3</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="passphrase_label">
+ <property name="label" translatable="yes">Password</property>
+ <property name="margin-top">6</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="passphrase_entry">
+ <property name="placeholder-text" translatable="yes">Enter a password here.</property>
+ <property name="input-purpose">password</property>
+ <property name="visibility">False</property>
+ <property name="secondary-icon-name">view-conceal</property>
+ <signal name="changed" handler="passphrase_entry_on_changed"/>
+ <signal name="icon-press" handler="passphrase_entry_on_icon_press"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
</object>
</child>
<child type="action">
@@ -197,6 +253,7 @@
<property name="can_default">True</property>
<property name="receives_default">True</property>
<property name="sensitive">False</property>
+ <signal name="notify::sensitive" handler="activate_button_on_sensitive_notify"/>
</object>
</child>
<action-widgets>
--
2.31.1

@ -0,0 +1,932 @@
diff --git a/po/be.po b/po/be.po
index 624542b36..b3630d863 100644
--- a/po/be.po
+++ b/po/be.po
@@ -7204,3 +7204,17 @@ msgstr "Увядзіце адрас сервера…"
#~ msgid "_Up"
#~ 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/bg.po b/po/bg.po
index 47958cc88..ae7876ec7 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -5471,3 +5471,15 @@ msgstr "Демонтиране"
#~ msgid "Enter server address…"
#~ msgstr "Въведете адреса на сървъра…"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:37
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ".zip, защитен с парола, но ще трябва да се инсталира на Windows и Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:214
+msgid "Password"
+msgstr "Парола"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:226
+msgid "Enter a password here."
+msgstr "Въведете парола."
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 ladresse 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/fur.po b/po/fur.po
index b9d163768..365c294af 100644
--- a/po/fur.po
+++ b/po/fur.po
@@ -8128,3 +8128,15 @@ msgstr "Scrîf direzion servidôr…"
#~ msgid "Set the zoom level of the current view"
#~ msgstr "Imposte il nivel di zoom de viodude atuâl"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:35
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "File .zip protet di password, ma tu âs di instalâlu su Windows o Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:199
+msgid "Password"
+msgstr "Password"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:209
+msgid "Enter a password here."
+msgstr "Inserìs achì une password."
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/is.po b/po/is.po
index c43e96a64..aab9c0ed4 100644
--- a/po/is.po
+++ b/po/is.po
@@ -7173,3 +7173,16 @@ msgstr "Settu inn vistfang þjóns..."
#~ msgid "_Up"
#~ msgstr "_Upp"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:37
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Zip-safnskrá varin með lykilorði, verður að setja upp á Windows og Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:214
+msgid "Password"
+msgstr "Lykilorð"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:226
+msgid "Enter a password here."
+msgstr "Settu inn lykilorð hér."
diff --git a/po/it.po b/po/it.po
index a3f16bbc8..c41493dfd 100644
--- a/po/it.po
+++ b/po/it.po
@@ -5762,3 +5762,17 @@ msgstr "Connetti al _server"
#: src/gtk/nautilusgtkplacesview.ui:340
msgid "Enter server address…"
msgstr "Inserire indirizzo server…"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:37
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"File .zip protetto da password, deve essere installato su Windows e Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:214
+#| msgid "Password Required"
+msgid "Password"
+msgstr "Password"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:226
+msgid "Enter a password here."
+msgstr "Inserire una password."
diff --git a/po/ja.po b/po/ja.po
index 6b63a9a7a..9ae419c23 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -5898,3 +5898,17 @@ msgstr "サーバーアドレスを入力…"
#~ msgid "_Ask each time"
#~ msgstr "毎回確認する(_A)"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:37
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"パスワードで保護された .zip です。Windows と Mac では別途アーカイバーのインス"
+"トールが必要です。"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:214
+msgid "Password"
+msgstr "パスワード"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:226
+msgid "Enter a password here."
+msgstr "ここにパスワードを入力してください。"
diff --git a/po/kab.po b/po/kab.po
index 380d7c4ee..2ae9aedbe 100644
--- a/po/kab.po
+++ b/po/kab.po
@@ -5605,3 +5605,15 @@ msgstr ""
#~ msgid "Change"
#~ msgstr "Changer"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Awal n uɛeddi"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr ""
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/lv.po b/po/lv.po
index b322bb8c5..d229e2be9 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -6082,3 +6082,16 @@ msgstr "Ievadiet servera adresi…"
#~ msgid "org.gnome.Nautilus"
#~ msgstr "org.gnome.Nautilus"
+
+#: 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 "Ar paroli aizsargāts .zip arhīvs, jābūt instalētai uz Windows un Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Parole"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Ievadiet paroli šeit."
diff --git a/po/nb.po b/po/nb.po
index 8a4d7d628..9f742c215 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -5594,3 +5594,15 @@ msgstr "Koble til _tjener"
#: src/gtk/nautilusgtkplacesview.ui:340
msgid "Enter server address…"
msgstr "Skriv inn tjeneradresse …"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:37
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Passordbeskyttet .zip må installeres på Windows og Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:214
+msgid "Password"
+msgstr "Passord"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:226
+msgid "Enter a password here."
+msgstr "Skriv inn et passord her"
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/sr.po b/po/sr.po
index 8f493a557..e1728d681 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7550,3 +7550,17 @@ msgstr "Адреса сервера…"
#~ "ако нисте, пишите Задужбини слободног софтвера на следећу адресу: „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 ""
+"ЗИП архива заштићена лозинком, потребни инсталирани алати за отварање на "
+"Виндоус и Мек системима."
+
+#: 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/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/vi.po b/po/vi.po
index af90d5a84..6be867604 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -7325,3 +7325,15 @@ msgstr "Hãy nhập địa chỉ của máy phục vụ…"
#~ msgid "_Organize by Name"
#~ msgstr "_Tổ chức theo tên"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:37
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ".zip được bảo vệ bằng mật khẩu, phải được cài đặt trên Windows và Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:214
+msgid "Password"
+msgstr "Mật khẩu"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:226
+msgid "Enter a password here."
+msgstr "Nhập mật khẩu vào đây."
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 "在此处输入密码。"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 8ee51f7d6..9549a5787 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -7667,3 +7667,15 @@ msgstr "輸入伺服器位址…"
#~ "您應該已經和程式一起收到一份 GNU 通用公共許可證的副本。如果還沒有,寫信"
#~ "給: the 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 "壓縮檔受密碼保護,必須安裝在 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.35.1

@ -0,0 +1,173 @@
From f3b1a749669c241ae3802e72a22a4eb7d1a44eed Mon Sep 17 00:00:00 2001
From: Clyde Laforge <clyde.laforge@protonmail.ch>
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 @@
<interface>
<requires lib="gtk+" version="3.14"/>
<object class="GtkPopover" id="extension_popover">
+ <signal name="show" handler="popover_on_show"/>
<property name="position">bottom</property>
<property name="constrain-to">none</property>
<child>
@@ -12,7 +13,7 @@
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<child>
- <object class="HdyActionRow">
+ <object class="HdyActionRow" id="zip_row">
<property name="visible">True</property>
<property name="activatable">True</property>
<property name="title" translatable="no">.zip</property>
@@ -49,7 +50,7 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
+ <object class="HdyActionRow" id="tar_xz_row">
<property name="visible">True</property>
<property name="activatable">True</property>
<property name="title" translatable="no">.tar.xz</property>
@@ -66,7 +67,7 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
+ <object class="HdyActionRow" id="seven_zip_row">
<property name="visible">True</property>
<property name="activatable">True</property>
<property name="title" translatable="no">.7z</property>
--
2.33.1

@ -0,0 +1,564 @@
From e71b54bafcbfffcb352600ebff4be8776de171f9 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
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 <glib/gi18n.h>
#include <gnome-autoar/gnome-autoar.h>
+#include <libhandy-1/handy.h>
#include <eel/eel-vfs-extensions.h>
@@ -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 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="3.14"/>
+ <object class="GtkPopover" id="extension_popover">
+ <property name="position">bottom</property>
+ <property name="constrain-to">none</property>
+ <child>
+ <object class="HdyPreferencesGroup">
+ <property name="visible">True</property>
+ <property name="margin-top">12</property>
+ <property name="margin-bottom">12</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="activatable">True</property>
+ <property name="title" translatable="no">.zip</property>
+ <property name="subtitle" translatable="yes">Compatible with all operating systems.</property>
+ <signal name="activated" handler="zip_row_on_activated"/>
+ <child>
+ <object class="GtkImage" id="zip_checkmark">
+ <property name="visible">True</property>
+ <property name="width-request">16</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="activatable">True</property>
+ <property name="title" translatable="no">.tar.xz</property>
+ <property name="subtitle" translatable="yes">Smaller archives but Linux and Mac only.</property>
+ <signal name="activated" handler="tar_xz_row_on_activated"/>
+ <child>
+ <object class="GtkImage" id="tar_xz_checkmark">
+ <property name="visible">True</property>
+ <property name="width-request">16</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="activatable">True</property>
+ <property name="title" translatable="no">.7z</property>
+ <property name="subtitle" translatable="yes">Smaller archives but must be installed on Windows and Mac.</property>
+ <signal name="activated" handler="seven_zip_row_on_activated"/>
+ <child>
+ <object class="GtkImage" id="seven_zip_checkmark">
+ <property name="visible">True</property>
+ <property name="width-request">16</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
<object class="GtkDialog" id="compress_dialog">
<property name="title" translatable="yes">Create Archive</property>
<property name="resizable">False</property>
@@ -9,19 +73,26 @@
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<property name="use-header-bar">1</property>
+ <property name="default-width">500</property>
+ <property name="default-height">210</property>
<child internal-child="vbox">
<object class="GtkBox" id="vbox">
<property name="orientation">vertical</property>
- <property name="margin_top">18</property>
- <property name="margin_bottom">12</property>
- <property name="margin_start">18</property>
- <property name="margin_end">18</property>
+ <property name="margin-top">30</property>
+ <property name="margin-bottom">30</property>
+ <property name="margin-start">30</property>
+ <property name="margin-end">30</property>
+ <property name="width-request">390</property>
+ <property name="halign">center</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="name_label">
<property name="label" translatable="yes">Archive name</property>
<property name="visible">True</property>
<property name="xalign">0</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
<packing>
<property name="expand">False</property>
@@ -30,132 +101,82 @@
</packing>
</child>
<child>
- <object class="GtkEntry" id="name_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkRevealer" id="error_revealer">
- <child>
- <object class="GtkLabel" id="error_label">
- <property name="margin_top">4</property>
- <property name="margin_bottom">4</property>
- <property name="visible">True</property>
- <property name="xalign">0</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="hbox">
+ <object class="GtkBox">
<property name="orientation">horizontal</property>
- <property name="homogeneous">True</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkRadioButton" id="zip_radio_button">
- <property name="label" translatable="no">.zip</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="zip_radio_button_on_toggled"/>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
+ <property name="spacing">12</property>
<child>
- <object class="GtkRadioButton" id="tar_xz_radio_button">
- <property name="label" translatable="no">.tar.xz</property>
- <property name="group">zip_radio_button</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="tar_xz_radio_button_on_toggled"/>
+ <object class="GtkEntry" id="name_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="width-chars">30</property>
</object>
<packing>
<property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="seven_zip_radio_button">
- <property name="label" translatable="no">.7z</property>
- <property name="group">zip_radio_button</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="seven_zip_radio_button_on_toggled"/>
+ <object class="GtkMenuButton" id="extension_button">
+ <property name="popover">extension_popover</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkStack" id="extension_stack">
+ <child>
+ <object class="GtkLabel" id="zip_label">
+ <property name="label" translatable="no">.zip</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="tar_xz_label">
+ <property name="label" translatable="no">.tar.xz</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="seven_zip_label">
+ <property name="label" translatable="no">.7z</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">pan-down-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">4</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
- <object class="GtkStack" id="description_stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="homogeneous">True</property>
- <child>
- <object class="GtkLabel" id="zip_description_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Compatible with all operating systems.</property>
- <property name="xalign">0</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="name">zip-description-label</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="tar_xz_description_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Smaller archives but Linux and Mac only.</property>
- <property name="xalign">0</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="name">tar-xz-description-label</property>
- </packing>
- </child>
+ <object class="GtkRevealer" id="error_revealer">
<child>
- <object class="GtkLabel" id="seven_zip_description_label">
+ <object class="GtkLabel" id="error_label">
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">Smaller archives but must be installed on Windows and Mac.</property>
<property name="xalign">0</property>
- <style>
- <class name="dim-label"/>
- </style>
</object>
- <packing>
- <property name="name">seven-zip-description-label</property>
- </packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">5</property>
+ <property name="position">3</property>
</packing>
</child>
</object>
--
2.31.1

@ -0,0 +1,52 @@
From 203d24f1e57991340b2870b0b956922144f0152a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ant=C3=B3nio=20Fernandes?= <antoniojpfernandes@gmail.com>
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 <gnome-autoar/gnome-autoar.h>
#include <libhandy-1/handy.h>
+#ifdef GDK_WINDOWING_X11
+#include <gdk/gdkx.h>
+#endif
+
#include <eel/eel-vfs-extensions.h>
#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

@ -1,13 +0,0 @@
diff --git a/src/nautilus-dbus-launcher.c b/src/nautilus-dbus-launcher.c
index bd5f5c5ec..b3f8e4db9 100644
--- a/src/nautilus-dbus-launcher.c
+++ b/src/nautilus-dbus-launcher.c
@@ -287,6 +287,6 @@ nautilus_dbus_launcher_init (NautilusDBusLauncher *self)
"org.gtk.Application");
nautilus_dbus_launcher_create_proxy (self->data[NAUTILUS_DBUS_LAUNCHER_CONSOLE],
- "org.gnome.Console", "/org/gnome/Console",
+ "org.gnome.Ptyxis", "/org/gnome/Ptyxis",
"org.freedesktop.Application");
}

@ -0,0 +1,76 @@
From 755cfdce38312dfc6572839a6fdbb1b39e1b4fe6 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Wed, 7 Dec 2022 08:51:51 +0100
Subject: [PATCH] file: Generate thumbnails when the preview icon is available
Currently, thumbnails are not shown for MTP/GPhoto2 locations. The
backends return `G_FILESYSTEM_PREVIEW_TYPE_NEVER` in order to prevent
thumbnailers to make them unresponsive. However, the backends provide
preview icons for some file types and the `GnomeDesktopThumbnailFactory`
is smart enough not to invoke thumbnailers if the icon is available
(see https://bugzilla.gnome.org/show_bug.cgi?id=738503). Let's allow
the thumbnail generation from the preview icons if they are available.
This should not affect backend responsiveness much.
Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/1921
---
src/nautilus-file-private.h | 3 ++-
src/nautilus-file.c | 14 ++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/nautilus-file-private.h b/src/nautilus-file-private.h
index d5d26c8b3..e9d49530c 100644
--- a/src/nautilus-file-private.h
+++ b/src/nautilus-file-private.h
@@ -27,7 +27,7 @@
#include <eel/eel-glib-extensions.h>
#define NAUTILUS_FILE_DEFAULT_ATTRIBUTES \
- "standard::*,access::*,mountable::*,time::*,unix::*,owner::*,selinux::*,thumbnail::*,id::filesystem,trash::orig-path,trash::deletion-date,metadata::*,recent::*"
+ "standard::*,access::*,mountable::*,time::*,unix::*,owner::*,selinux::*,thumbnail::*,id::filesystem,trash::orig-path,trash::deletion-date,metadata::*,recent::*,preview::icon"
/* These are in the typical sort order. Known things come first, then
* things where we can't know, finally things where we don't yet know.
@@ -185,6 +185,7 @@ struct NautilusFileDetails
eel_boolean_bit start_stop_type : 3; /* GDriveStartStopType */
eel_boolean_bit can_poll_for_media : 1;
eel_boolean_bit is_media_check_automatic : 1;
+ eel_boolean_bit has_preview_icon : 1;
eel_boolean_bit filesystem_readonly : 1;
eel_boolean_bit filesystem_use_preview : 2; /* GFilesystemPreviewType */
diff --git a/src/nautilus-file.c b/src/nautilus-file.c
index 2999f2fa5..d9d988ccd 100644
--- a/src/nautilus-file.c
+++ b/src/nautilus-file.c
@@ -2914,6 +2914,11 @@ update_info_internal (NautilusFile *file,
file->details->trash_orig_path = g_strdup (trash_orig_path);
}
+ if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_PREVIEW_ICON))
+ {
+ file->details->has_preview_icon = TRUE;
+ }
+
changed |=
nautilus_file_update_metadata_from_info (file, info);
@@ -4836,6 +4841,15 @@ nautilus_file_should_show_thumbnail (NautilusFile *file)
return FALSE;
}
+ if (show_file_thumbs != NAUTILUS_SPEED_TRADEOFF_NEVER &&
+ file->details->has_preview_icon)
+ {
+ /* The thumbnail should be generated if the preview icon is available
+ * regardless of the filesystem type (i.e. for MTP/GPhoto2 backends).
+ */
+ return TRUE;
+ }
+
return get_speed_tradeoff_preference_for_file (file, show_file_thumbs);
}
--
2.39.2

@ -0,0 +1,113 @@
From d4e00000d46e0407841424a478eab833cf59cc12 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
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

@ -0,0 +1,113 @@
From c3b8e0d6dee8ae8d86cbc47a0745b3e9b2b814e7 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
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

@ -0,0 +1,70 @@
From d09b34cde210c4f817d2442cc9378b1ddf73aee9 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
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

@ -0,0 +1,74 @@
From bdd317d999458fc35b23ee9c6141a9d0c9ec66f7 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
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

@ -0,0 +1,42 @@
From e03d731e3dcb8d0f52ffbc6faa188802b742d1e9 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Thu, 26 Jan 2023 13:20:51 +0100
Subject: [PATCH] file-utilities: Prevent passing NULL to g_object_unref
The `nautilus_find_existing_uri_in_hierarchy` function calls the
`g_object_unref` with a `NULL` pointer when `g_file_query_info` fails.
This leads to a crash e.g. when parent directory of the currently
opened location is removed. Let's port the code to use `g_autoptr` to
avoid that.
---
src/nautilus-file-utilities.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/nautilus-file-utilities.c b/src/nautilus-file-utilities.c
index e8f1ca2fb..1c913dbad 100644
--- a/src/nautilus-file-utilities.c
+++ b/src/nautilus-file-utilities.c
@@ -598,7 +598,6 @@ nautilus_generate_unique_file_in_directory (GFile *directory,
GFile *
nautilus_find_existing_uri_in_hierarchy (GFile *location)
{
- GFileInfo *info;
GFile *tmp;
g_assert (location != NULL);
@@ -606,10 +605,11 @@ nautilus_find_existing_uri_in_hierarchy (GFile *location)
location = g_object_ref (location);
while (location != NULL)
{
+ g_autoptr (GFileInfo) info = NULL;
+
info = g_file_query_info (location,
G_FILE_ATTRIBUTE_STANDARD_NAME,
0, NULL, NULL);
- g_object_unref (info);
if (info != NULL)
{
return location;
--
2.40.0

@ -0,0 +1,89 @@
From 18fd27b5789758a7cbf97c8ab59b57d890923779 Mon Sep 17 00:00:00 2001
From: utkarshvg2401 <utkarshvg2401@gmail.com>
Date: Fri, 1 Apr 2022 10:48:08 +0530
Subject: [PATCH] files-view: Add menu item to copy current path
Currently, there is no option to directly copy the path of the current open directory.
This can be useful when users want to use the path of the directory in the terminal or some code.
Close https://gitlab.gnome.org/GNOME/nautilus/-/issues/1966
---
src/nautilus-files-view.c | 29 +++++++++++++++++++
.../ui/nautilus-files-view-context-menus.ui | 6 ++++
2 files changed, 35 insertions(+)
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 378e6bdba..1e1025eed 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -6123,6 +6123,30 @@ action_cut (GSimpleAction *action,
nautilus_file_list_free (selection);
}
+static void
+action_copy_current_location (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusFilesView *view;
+ GtkClipboard *clipboard;
+ GList *files;
+ NautilusFilesViewPrivate *priv;
+
+ view = NAUTILUS_FILES_VIEW (user_data);
+ priv = nautilus_files_view_get_instance_private (view);
+
+ if (priv->directory_as_file != NULL)
+ {
+ files = g_list_append (NULL, nautilus_file_ref (priv->directory_as_file));
+
+ clipboard = nautilus_clipboard_get (GTK_WIDGET (view));
+ nautilus_clipboard_prepare_for_files (clipboard, files, FALSE);
+
+ nautilus_file_list_free (files);
+ }
+}
+
static void
action_create_links_in_place (GSimpleAction *action,
GVariant *state,
@@ -7154,6 +7178,7 @@ const GActionEntry view_entries[] =
{ "select-all", action_select_all },
{ "paste", action_paste_files },
{ "paste_accel", action_paste_files_accel },
+ { "copy-current-location", action_copy_current_location },
{ "create-link", action_create_links },
{ "new-document" },
/* Selection menu */
@@ -7789,6 +7814,10 @@ real_update_actions_state (NautilusFilesView *view)
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
can_move_files && !selection_contains_recent &&
!selection_contains_starred);
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
+ "copy-current-location");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
+ !selection_contains_search);
/* Drive menu */
show_mount = (selection != NULL);
diff --git a/src/resources/ui/nautilus-files-view-context-menus.ui b/src/resources/ui/nautilus-files-view-context-menus.ui
index 27764c9a7..22a1cb231 100644
--- a/src/resources/ui/nautilus-files-view-context-menus.ui
+++ b/src/resources/ui/nautilus-files-view-context-menus.ui
@@ -14,6 +14,12 @@
<attribute name="label" translatable="yes">Add to _Bookmarks</attribute>
<attribute name="action">win.bookmark-current-location</attribute>
</item>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Copy Location</attribute>
+ <attribute name="action">view.copy-current-location</attribute>
+ </item>
+ </section>
<section>
<item>
<attribute name="label" translatable="yes">Create _Link</attribute>
--
2.36.1

@ -0,0 +1,400 @@
diff -ruN nautilus-40.2/po/bg.po nautilus-40.2.translations/po/bg.po
--- nautilus-40.2/po/bg.po 2022-09-22 15:52:30.138654010 +0200
+++ nautilus-40.2.translations/po/bg.po 2022-09-22 15:52:33.477666280 +0200
@@ -5483,3 +5483,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:226
msgid "Enter a password here."
msgstr "Въведете парола."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Копиране на местоположение"
diff -ruN nautilus-40.2/po/ca.po nautilus-40.2.translations/po/ca.po
--- nautilus-40.2/po/ca.po 2022-09-22 15:52:30.138654010 +0200
+++ nautilus-40.2.translations/po/ca.po 2022-09-22 15:52:33.505666383 +0200
@@ -5907,3 +5907,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Introduïu una contrasenya aquí."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Copia la ubicació"
diff -ruN nautilus-40.2/po/cs.po nautilus-40.2.translations/po/cs.po
--- nautilus-40.2/po/cs.po 2022-09-22 15:52:30.139654013 +0200
+++ nautilus-40.2.translations/po/cs.po 2022-09-22 15:52:33.524666453 +0200
@@ -5767,3 +5767,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "zde zadejte heslo"
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "Z_kopírovat umístění"
diff -ruN nautilus-40.2/po/da.po nautilus-40.2.translations/po/da.po
--- nautilus-40.2/po/da.po 2022-09-22 15:52:30.139654013 +0200
+++ nautilus-40.2.translations/po/da.po 2022-09-22 15:52:33.537666500 +0200
@@ -7522,3 +7522,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Indtast en adgangskode her."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Kopiér placering"
diff -ruN nautilus-40.2/po/de.po nautilus-40.2.translations/po/de.po
--- nautilus-40.2/po/de.po 2022-09-22 15:52:30.140654017 +0200
+++ nautilus-40.2.translations/po/de.po 2022-09-22 15:52:33.546666534 +0200
@@ -6034,3 +6034,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Geben Sie hier ein Passwort ein."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "Ort _kopieren"
diff -ruN nautilus-40.2/po/el.po nautilus-40.2.translations/po/el.po
--- nautilus-40.2/po/el.po 2022-09-22 15:52:30.140654017 +0200
+++ nautilus-40.2.translations/po/el.po 2022-09-22 15:52:33.559666581 +0200
@@ -6135,3 +6135,8 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Εισαγωγή συνθηματικού εδώ."
+
+#
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Αντιγραφή τοποθεσίας"
diff -ruN nautilus-40.2/po/en_GB.po nautilus-40.2.translations/po/en_GB.po
--- nautilus-40.2/po/en_GB.po 2022-09-22 15:52:30.141654021 +0200
+++ nautilus-40.2.translations/po/en_GB.po 2022-09-22 15:52:33.571666625 +0200
@@ -10323,3 +10323,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Enter a password here."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Copy Location"
diff -ruN nautilus-40.2/po/es.po nautilus-40.2.translations/po/es.po
--- nautilus-40.2/po/es.po 2022-09-22 15:52:30.142654024 +0200
+++ nautilus-40.2.translations/po/es.po 2022-09-22 15:52:33.589666692 +0200
@@ -11269,3 +11269,8 @@
#| msgid "Enter password…"
msgid "Enter a password here."
msgstr "Introduzca una contraseña aquí."
+
+# src/nautilus-location-bar.c:401
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "Copiar _ubicación"
diff -ruN nautilus-40.2/po/eu.po nautilus-40.2.translations/po/eu.po
--- nautilus-40.2/po/eu.po 2022-09-22 15:52:30.142654024 +0200
+++ nautilus-40.2.translations/po/eu.po 2022-09-22 15:52:33.600666732 +0200
@@ -5688,3 +5688,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Idatzi pasahitza hemen."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Kopiatu kokalekua"
diff -ruN nautilus-40.2/po/fa.po nautilus-40.2.translations/po/fa.po
--- nautilus-40.2/po/fa.po 2022-09-22 15:52:30.143654028 +0200
+++ nautilus-40.2.translations/po/fa.po 2022-09-22 15:52:33.612666776 +0200
@@ -10626,3 +10626,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "این‌جا گذرواژه‌ای وارد کنید."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_رونوشت از مکان"
diff -ruN nautilus-40.2/po/fi.po nautilus-40.2.translations/po/fi.po
--- nautilus-40.2/po/fi.po 2022-09-22 15:52:30.144654032 +0200
+++ nautilus-40.2.translations/po/fi.po 2022-09-22 15:52:33.621666809 +0200
@@ -7375,3 +7375,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Kirjoita salasana tähän."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "Kopioi si_jainti"
diff -ruN nautilus-40.2/po/fr.po nautilus-40.2.translations/po/fr.po
--- nautilus-40.2/po/fr.po 2022-09-22 15:52:30.144654032 +0200
+++ nautilus-40.2.translations/po/fr.po 2022-09-22 15:52:33.629666839 +0200
@@ -6019,3 +6019,7 @@
#| msgid "Enter password…"
msgid "Enter a password here."
msgstr "Saisissez un mot de passe ici."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "Co_pier lemplacement"
diff -ruN nautilus-40.2/po/fur.po nautilus-40.2.translations/po/fur.po
--- nautilus-40.2/po/fur.po 2022-09-22 15:52:30.145654035 +0200
+++ nautilus-40.2.translations/po/fur.po 2022-09-22 15:52:33.638666872 +0200
@@ -8140,3 +8140,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:209
msgid "Enter a password here."
msgstr "Inserìs achì une password."
+
+#: src/resources/ui/nautilus-files-view-context-menus.ui:34
+msgid "_Copy Location"
+msgstr "_Copie posizion"
diff -ruN nautilus-40.2/po/gl.po nautilus-40.2.translations/po/gl.po
--- nautilus-40.2/po/gl.po 2022-09-22 15:52:30.145654035 +0200
+++ nautilus-40.2.translations/po/gl.po 2022-09-22 15:52:33.658666945 +0200
@@ -5897,3 +5897,7 @@
#| msgid "Enter password…"
msgid "Enter a password here."
msgstr "Escriba un contrasinal aquí…"
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Copiar localización"
diff -ruN nautilus-40.2/po/he.po nautilus-40.2.translations/po/he.po
--- nautilus-40.2/po/he.po 2022-09-22 15:52:30.146654039 +0200
+++ nautilus-40.2.translations/po/he.po 2022-09-22 15:52:33.679667022 +0200
@@ -11143,3 +11143,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "נא למלא כאן ססמה."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "ה_עתקת מיקום"
diff -ruN nautilus-40.2/po/hr.po nautilus-40.2.translations/po/hr.po
--- nautilus-40.2/po/hr.po 2022-09-22 15:52:30.147654043 +0200
+++ nautilus-40.2.translations/po/hr.po 2022-09-22 15:52:33.692667070 +0200
@@ -6489,3 +6489,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Upišite lozinku ovdje."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Kopiraj lokaciju"
diff -ruN nautilus-40.2/po/hu.po nautilus-40.2.translations/po/hu.po
--- nautilus-40.2/po/hu.po 2022-09-22 15:52:30.147654043 +0200
+++ nautilus-40.2.translations/po/hu.po 2022-09-22 15:52:33.700667099 +0200
@@ -5868,3 +5868,8 @@
#| msgid "Enter password…"
msgid "Enter a password here."
msgstr "Adjon meg egy jelszót itt."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+#| msgid "Location"
+msgid "_Copy Location"
+msgstr "Hely má_solása"
diff -ruN nautilus-40.2/po/id.po nautilus-40.2.translations/po/id.po
--- nautilus-40.2/po/id.po 2022-09-22 15:52:30.148654046 +0200
+++ nautilus-40.2.translations/po/id.po 2022-09-22 15:52:33.713667147 +0200
@@ -6368,3 +6368,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Masukkan kata sandi di sini."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Salin Lokasi"
diff -ruN nautilus-40.2/po/ka.po nautilus-40.2.translations/po/ka.po
--- nautilus-40.2/po/ka.po 2021-06-04 13:59:15.686239200 +0200
+++ nautilus-40.2.translations/po/ka.po 2022-09-22 15:52:33.742667254 +0200
@@ -6877,3 +6877,7 @@
#~ msgid "Video CD"
#~ msgstr "ვიდეო CD ფორმატში"
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_მდებარეობის კოპირება"
diff -ruN nautilus-40.2/po/kk.po nautilus-40.2.translations/po/kk.po
--- nautilus-40.2/po/kk.po 2022-09-22 15:52:30.151654057 +0200
+++ nautilus-40.2.translations/po/kk.po 2022-09-22 15:52:33.752667291 +0200
@@ -7856,3 +7856,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Парольді осында енгізіңіз."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "Орналасуын _көшіріп алу"
diff -ruN nautilus-40.2/po/ko.po nautilus-40.2.translations/po/ko.po
--- nautilus-40.2/po/ko.po 2022-09-22 15:52:30.151654057 +0200
+++ nautilus-40.2.translations/po/ko.po 2022-09-22 15:52:33.768667349 +0200
@@ -5745,3 +5745,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "여기 암호를 입력하십시오."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "위치 복사(_C)"
diff -ruN nautilus-40.2/po/lt.po nautilus-40.2.translations/po/lt.po
--- nautilus-40.2/po/lt.po 2022-09-22 15:52:30.152654061 +0200
+++ nautilus-40.2.translations/po/lt.po 2022-09-22 15:52:33.790667430 +0200
@@ -7516,3 +7516,7 @@
#| msgid "Enter password…"
msgid "Enter a password here."
msgstr "Įveskite slaptažodį čia."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Kopijuoti vietą"
diff -ruN nautilus-40.2/po/lv.po nautilus-40.2.translations/po/lv.po
--- nautilus-40.2/po/lv.po 2022-09-22 15:52:30.152654061 +0200
+++ nautilus-40.2.translations/po/lv.po 2022-09-22 15:52:33.799667463 +0200
@@ -6095,3 +6095,8 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Ievadiet paroli šeit."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+#| msgid "Location"
+msgid "_Copy Location"
+msgstr "_Kopēt atrašanās vietu"
diff -ruN nautilus-40.2/po/nl.po nautilus-40.2.translations/po/nl.po
--- nautilus-40.2/po/nl.po 2022-09-22 15:52:30.153654065 +0200
+++ nautilus-40.2.translations/po/nl.po 2022-09-22 15:52:33.854667665 +0200
@@ -6851,3 +6851,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Voer hier een wachtwoord in."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "Locatie _kopiëren"
diff -ruN nautilus-40.2/po/oc.po nautilus-40.2.translations/po/oc.po
--- nautilus-40.2/po/oc.po 2022-09-22 15:52:30.154654068 +0200
+++ nautilus-40.2.translations/po/oc.po 2022-09-22 15:52:33.870667724 +0200
@@ -7540,3 +7540,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Picatz un senhal aquí."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Copiar l'emplaçament"
diff -ruN nautilus-40.2/po/pl.po nautilus-40.2.translations/po/pl.po
--- nautilus-40.2/po/pl.po 2022-09-22 15:52:30.154654068 +0200
+++ nautilus-40.2.translations/po/pl.po 2022-09-22 15:52:33.886667783 +0200
@@ -5790,3 +5790,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Hasło…"
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "S_kopiuj położenie"
diff -ruN nautilus-40.2/po/pt_BR.po nautilus-40.2.translations/po/pt_BR.po
--- nautilus-40.2/po/pt_BR.po 2022-09-22 15:52:30.155654072 +0200
+++ nautilus-40.2.translations/po/pt_BR.po 2022-09-22 15:52:33.898667827 +0200
@@ -7577,3 +7577,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Insira uma senha aqui."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Copiar local"
diff -ruN nautilus-40.2/po/pt.po nautilus-40.2.translations/po/pt.po
--- nautilus-40.2/po/pt.po 2022-09-22 15:52:30.155654072 +0200
+++ nautilus-40.2.translations/po/pt.po 2022-09-22 15:52:33.906667857 +0200
@@ -6495,3 +6495,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Introduza aqui uma palavra-passe."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Copiar localização"
diff -ruN nautilus-40.2/po/ru.po nautilus-40.2.translations/po/ru.po
--- nautilus-40.2/po/ru.po 2022-09-22 15:52:30.157654079 +0200
+++ nautilus-40.2.translations/po/ru.po 2022-09-22 15:52:33.919667904 +0200
@@ -6587,3 +6587,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Введите пароль здесь."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Копировать адрес"
diff -ruN nautilus-40.2/po/sl.po nautilus-40.2.translations/po/sl.po
--- nautilus-40.2/po/sl.po 2022-09-22 15:52:30.158654083 +0200
+++ nautilus-40.2.translations/po/sl.po 2022-09-22 15:52:33.938667974 +0200
@@ -7757,3 +7757,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Vnos gesla"
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "Kopiraj _mesto"
diff -ruN nautilus-40.2/po/sr.po nautilus-40.2.translations/po/sr.po
--- nautilus-40.2/po/sr.po 2022-09-22 15:52:30.159654087 +0200
+++ nautilus-40.2.translations/po/sr.po 2022-09-22 15:52:33.959668051 +0200
@@ -7564,3 +7564,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Унесите лозинку овде."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Копирај путању"
diff -ruN nautilus-40.2/po/sv.po nautilus-40.2.translations/po/sv.po
--- nautilus-40.2/po/sv.po 2022-09-22 15:52:30.159654087 +0200
+++ nautilus-40.2.translations/po/sv.po 2022-09-22 15:52:33.968668084 +0200
@@ -6722,3 +6722,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Ange ett lösenord här."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Kopiera plats"
diff -ruN nautilus-40.2/po/tr.po nautilus-40.2.translations/po/tr.po
--- nautilus-40.2/po/tr.po 2022-09-22 15:52:30.160654090 +0200
+++ nautilus-40.2.translations/po/tr.po 2022-09-22 15:52:33.996668187 +0200
@@ -6606,3 +6606,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Buraya parola gir…"
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "Konumu _Kopyala"
diff -ruN nautilus-40.2/po/uk.po nautilus-40.2.translations/po/uk.po
--- nautilus-40.2/po/uk.po 2022-09-22 15:52:30.160654090 +0200
+++ nautilus-40.2.translations/po/uk.po 2022-09-22 15:52:34.009668235 +0200
@@ -6030,3 +6030,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "Тут слід ввести пароль."
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "_Копіювати адресу"
diff -ruN nautilus-40.2/po/zh_CN.po nautilus-40.2.translations/po/zh_CN.po
--- nautilus-40.2/po/zh_CN.po 2022-09-22 15:52:30.161654094 +0200
+++ nautilus-40.2.translations/po/zh_CN.po 2022-09-22 15:52:34.043668360 +0200
@@ -6197,3 +6197,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "在此处输入密码。"
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "复制位置(_C)"
diff -ruN nautilus-40.2/po/zh_TW.po nautilus-40.2.translations/po/zh_TW.po
--- nautilus-40.2/po/zh_TW.po 2022-09-22 15:52:30.162654098 +0200
+++ nautilus-40.2.translations/po/zh_TW.po 2022-09-22 15:52:34.055668404 +0200
@@ -7679,3 +7679,7 @@
#: src/resources/ui/nautilus-compress-dialog.ui:225
msgid "Enter a password here."
msgstr "請在此輸入密碼。"
+
+#: src/resources/ui/nautilus-pathbar-context-menu.ui:53
+msgid "_Copy Location"
+msgstr "複製位置(_C)"

@ -0,0 +1,117 @@
From 67c7bdbf8757c51d3b1bc1f5c40eaeddef9e3a89 Mon Sep 17 00:00:00 2001
From: Anubhav Tyagi <tyagianubhav619@gmail.com>
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

@ -0,0 +1,96 @@
From ba878013689114bf199ba2260f9282ae82b352c4 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Wed, 22 Feb 2023 16:22:43 +0100
Subject: [PATCH] freedesktop-dbus: Try to own the name until after exporting
skeleton
Currently, the `g_bus_own_name_on_connection` function is called for the
`org.freedesktop.FileManager1` name before exporting the
`/org/freedesktop/FileManager1` skeleton. This seemingly works fine in most
cases, but occasionally the name is acquired too early and D-Bus clients
can get `No such interface` error. This is regression caused by the commit
2293e813d3cd1cc47b2b8750f7140647aa066fc8. Let's try to own the nam until
after exporting the skeleton to avoid this error.
---
src/nautilus-freedesktop-dbus.c | 31 +++++++++++++++----------------
1 file changed, 15 insertions(+), 16 deletions(-)
diff --git a/src/nautilus-freedesktop-dbus.c b/src/nautilus-freedesktop-dbus.c
index c253cfaba..c20166abb 100644
--- a/src/nautilus-freedesktop-dbus.c
+++ b/src/nautilus-freedesktop-dbus.c
@@ -162,20 +162,6 @@ name_lost_cb (GDBusConnection *connection,
DEBUG ("Lost (or failed to acquire) the name %s on the session message bus\n", name);
}
-static void
-nautilus_freedesktop_dbus_constructed (GObject *object)
-{
- NautilusFreedesktopDBus *fdb = NAUTILUS_FREEDESKTOP_DBUS (object);
-
- fdb->owner_id = g_bus_own_name_on_connection (fdb->connection,
- NAUTILUS_FDO_DBUS_NAME,
- G_BUS_NAME_OWNER_FLAGS_NONE,
- name_acquired_cb,
- name_lost_cb,
- fdb,
- NULL);
-}
-
static void
nautilus_freedesktop_dbus_dispose (GObject *object)
{
@@ -252,7 +238,6 @@ nautilus_freedesktop_dbus_class_init (NautilusFreedesktopDBusClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = nautilus_freedesktop_dbus_dispose;
- object_class->constructed = nautilus_freedesktop_dbus_constructed;
object_class->get_property = nautilus_freedesktop_dbus_get_property;
object_class->set_property = nautilus_freedesktop_dbus_set_property;
@@ -301,7 +286,6 @@ nautilus_freedesktop_dbus_set_open_windows_with_locations (NautilusFreedesktopDB
locations);
}
-/* Tries to own the org.freedesktop.FileManager1 service name */
NautilusFreedesktopDBus *
nautilus_freedesktop_dbus_new (GDBusConnection *connection)
{
@@ -310,6 +294,7 @@ nautilus_freedesktop_dbus_new (GDBusConnection *connection)
NULL);
}
+/* Tries to own the org.freedesktop.FileManager1 service name */
gboolean
nautilus_freedesktop_dbus_register (NautilusFreedesktopDBus *fdb,
GError **error)
@@ -331,12 +316,26 @@ nautilus_freedesktop_dbus_register (NautilusFreedesktopDBus *fdb,
G_CALLBACK (skeleton_handle_show_item_properties_cb), fdb);
}
+ fdb->owner_id = g_bus_own_name_on_connection (fdb->connection,
+ NAUTILUS_FDO_DBUS_NAME,
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ name_acquired_cb,
+ name_lost_cb,
+ fdb,
+ NULL);
+
return success;
}
void
nautilus_freedesktop_dbus_unregister (NautilusFreedesktopDBus *fdb)
{
+ if (fdb->owner_id != 0)
+ {
+ g_bus_unown_name (fdb->owner_id);
+ fdb->owner_id = 0;
+ }
+
g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (fdb->skeleton));
g_signal_handlers_disconnect_by_data (fdb->skeleton, fdb);
--
2.39.1

@ -0,0 +1,59 @@
From 151af5733a11dc4aceb8ecf4c9eeafcaab188451 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Fri, 27 Jan 2023 11:02:22 +0100
Subject: [PATCH] pathbar: Do nothing when current location disappears
The pathbar automatically clear all the buttons when the current location
is marked as gone. This was needed earlier, when child folders where shown
in some cases, but this is no more needed nowadays. Let's drop that code.
---
src/nautilus-pathbar.c | 33 +--------------------------------
1 file changed, 1 insertion(+), 32 deletions(-)
diff --git a/src/nautilus-pathbar.c b/src/nautilus-pathbar.c
index edc0fff56..4bd9ff5b2 100644
--- a/src/nautilus-pathbar.c
+++ b/src/nautilus-pathbar.c
@@ -1445,38 +1445,7 @@ button_data_file_changed (NautilusFile *file,
}
else if (nautilus_file_is_gone (file))
{
- gint idx, position;
-
- /* if the current or a parent location are gone, clear all the buttons,
- * the view will set the new path.
- */
- current_location = nautilus_file_get_location (current_button_data->file);
-
- if (g_file_has_prefix (current_location, location) ||
- g_file_equal (current_location, location))
- {
- nautilus_path_bar_clear_buttons (self);
- }
- else if (g_file_has_prefix (location, current_location))
- {
- /* remove this and the following buttons */
- position = g_list_position (self->button_list,
- g_list_find (self->button_list, button_data));
-
- if (position != -1)
- {
- for (idx = 0; idx <= position; idx++)
- {
- ButtonData *data;
-
- data = BUTTON_DATA (self->button_list->data);
-
- gtk_container_remove (GTK_CONTAINER (self), data->button);
- }
- }
- }
-
- g_object_unref (current_location);
+ /* Do nothing here, the view will set new path if needed. */
g_object_unref (location);
return;
}
--
2.40.0

@ -0,0 +1,37 @@
From 87d2f2cfd61baf813aee204be570172b78159281 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Wed, 14 Jun 2023 12:52:02 +0200
Subject: [PATCH] window-slot: Fix conditions to restore selection when
reloading
Currently, the `nautilus_window_slot_force_reload` function doesn't
preserve selection or position. However, there is a code that should do
it. The code is executed only when `new_content_view != NULL`, but it
is based on the `content_view` property. This seems to be a regression
caused by the commit 9806d70e. Let's fix that condition in order to
ensure that the selection and position are restored.
---
src/nautilus-window-slot.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 2bfb3f3ce..8ceac9562 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -2376,11 +2376,11 @@ nautilus_window_slot_force_reload (NautilusWindowSlot *self)
g_object_ref (location);
current_pos = NULL;
- if (priv->new_content_view)
+ if (priv->content_view)
{
selection = nautilus_view_get_selection (priv->content_view);
- if (NAUTILUS_IS_FILES_VIEW (priv->new_content_view))
+ if (NAUTILUS_IS_FILES_VIEW (priv->content_view))
{
current_pos = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW (priv->content_view));
}
--
2.40.0

@ -0,0 +1,43 @@
From f68481d2d8393f1ba1a9b0a86a1b28b6ac303a63 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Wed, 24 May 2023 13:09:35 +0200
Subject: [PATCH] window-slot: Force reload current location when it reappears
When the currently opened location disappears, nautilus tries to
reopen it thanks to the commit b0e28bc1. However, the
`nautilus_window_slot_open_location_full` function doesn't begin the
location change when the old location is the same as the new one. This
is a problem because the old `NautilusFile` object is marked as gone
and thus monitoring and perhaps some other stuff won't work. Let's use
the `nautilus_window_slot_force_reload` function instead, in this case,
to ensure that the underlying `NautilusFile` is updated.
---
src/nautilus-window-slot.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 811152a21..561b34f12 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -1458,7 +1458,17 @@ viewed_file_changed_callback (NautilusFile *file,
go_to_file = g_file_new_for_path (g_get_home_dir ());
}
- nautilus_window_slot_open_location_full (self, go_to_file, 0, NULL);
+ if (g_file_equal (location, go_to_file))
+ {
+ /* Path gone by time out may have been remounted by
+ * `nautilus_find_existing_uri_in_hierarchy()`.
+ */
+ nautilus_window_slot_force_reload (self);
+ }
+ else
+ {
+ nautilus_window_slot_open_location_full (self, go_to_file, 0, NULL);
+ }
g_object_unref (go_to_file);
g_object_unref (location);
--
2.40.0

@ -0,0 +1,72 @@
From b0e28bc19c065b4bc1d6fdea922ae2c09115b0e6 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Tue, 24 Jan 2023 12:13:15 +0100
Subject: [PATCH] window-slot: Try current location even if it is marked as
gone
When the current location is marked as gone, Nautilus jumps to the
first existing parent currently (except for non-native locations and
mount roots). This is fine in most cases, but not for autofs locations
as Nautilus jumps to parent everytime autofs mount timeouted. It would
be better to stay in the same folder in this case. Let's try the current
location first even if it is marked as gone to ensure that. It would be
perhaps even better to prevent autofs locations somehow from timeouting
at all, or avoid immediate remounting at least, but those solutions
don't look easy to implement.
Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/1514
---
src/nautilus-window-slot.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index c06dc3432..a1af61887 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -1442,11 +1442,10 @@ viewed_file_changed_callback (NautilusFile *file,
if (priv->viewed_file_seen)
{
GFile *go_to_file;
- GFile *parent;
GFile *location;
GMount *mount;
+ gboolean find_existing = FALSE;
- parent = NULL;
location = nautilus_file_get_location (file);
if (g_file_is_native (location))
@@ -1455,16 +1454,18 @@ viewed_file_changed_callback (NautilusFile *file,
if (mount == NULL)
{
- parent = g_file_get_parent (location);
+ find_existing = TRUE;
}
g_clear_object (&mount);
}
- if (parent != NULL)
+ if (find_existing)
{
- /* auto-show existing parent */
- go_to_file = nautilus_find_existing_uri_in_hierarchy (parent);
+ /* Verify also the current location to prevent jumps to parent
+ * in case of autofs.
+ */
+ go_to_file = nautilus_find_existing_uri_in_hierarchy (location);
}
else
{
@@ -1473,7 +1474,6 @@ viewed_file_changed_callback (NautilusFile *file,
nautilus_window_slot_open_location_full (self, go_to_file, 0, NULL);
- g_clear_object (&parent);
g_object_unref (go_to_file);
g_object_unref (location);
}
--
2.39.2

@ -1,62 +1,72 @@
## START: Set by rpmautospec
## (rpmautospec version 0.6.5)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
release_number = 1;
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec
%bcond cloudproviders %{undefined rhel}
%global glib2_version 2.79.0
%global gnome_autoar_version 0.4.4
%global gtk4_version 4.15.2
%global libadwaita_version 1.6~beta
Name: nautilus
Version: 47.0
%global glib2_version 2.67.1
%global gnome_autoar_version 0.4.0
%global gtk3_version 3.22.27
%global tarball_version %%(echo %{version} | tr '~' '.')
%global major_version %%(cut -d "." -f 1 <<<%{tarball_version})
Release: %autorelease
Name: nautilus
Version: 40.2
Release: 14%{?dist}
Summary: File manager for GNOME
# Sources are GPL-3.0-or-later and Appdata is CC0-1.0.
License: GPL-3.0-or-later AND CC0-1.0
URL: https://apps.gnome.org/Nautilus/
Source0: https://download.gnome.org/sources/%{name}/%{major_version}/%{name}-%{tarball_version}.tar.xz
# https://pagure.io/fedora-workstation/issue/442
Patch: default-terminal.patch
# These patches all revert commits that handle 'tracker' being renamed
# to 'localsearch', because that change hasn't landed in Rawhide yet
# Drop these patches when the package gets renamed
Patch: 0001-Revert-general-React-to-tracker-projects-rename.patch
Patch: 0002-Revert-test-Update-to-localsearch-CLI-rename.patch
Patch: 0003-Revert-tests-Use-localsearch3-test-sandbox.patch
License: GPLv3+
URL: https://wiki.gnome.org/Apps/Nautilus
Source0: https://download.gnome.org/sources/%{name}/40/%{name}-%{tarball_version}.tar.xz
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
# https://bugzilla.redhat.com/show_bug.cgi?id=2098578
Patch10: files-view-Add-menu-item-to-copy-current-path.patch
Patch11: files-view-Backport-translations.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2162302
Patch12: Revert-application-add-common-startup-code.patch
Patch13: Revert-freedesktop-dbus-Defer-D-Bus-property-setting.patch
Patch14: application-Export-FileManager1-iface-from-dbus_regi.patch
Patch15: freedesktop-dbus-Try-to-own-the-name-until-after-exp.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2184292
Patch16: window-slot-Try-current-location-even-if-it-is-marke.patch
Patch17: window-slot-Force-reload-current-location-when-it-re.patch
Patch18: pathbar-Do-nothing-when-current-location-disappears.patch
Patch19: file-utilities-Prevent-passing-NULL-to-g_object_unre.patch
Patch20: window-slot-Fix-conditions-to-restore-selection-when.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2120263
Patch21: file-Generate-thumbnails-when-the-preview-icon-is-av.patch
BuildRequires: desktop-file-utils
BuildRequires: gcc
BuildRequires: gettext
BuildRequires: gtk-doc
BuildRequires: meson
BuildRequires: pkgconfig(gexiv2)
BuildRequires: pkgconfig(gi-docgen)
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
BuildRequires: pkgconfig(gnome-autoar-0) >= %{gnome_autoar_version}
BuildRequires: pkgconfig(gnome-desktop-4)
BuildRequires: pkgconfig(gnome-desktop-3.0)
BuildRequires: pkgconfig(gobject-introspection-1.0)
BuildRequires: pkgconfig(gsettings-desktop-schemas)
BuildRequires: pkgconfig(gstreamer-pbutils-1.0)
BuildRequires: pkgconfig(gstreamer-tag-1.0)
BuildRequires: pkgconfig(gtk4) >= %{gtk4_version}
BuildRequires: pkgconfig(libadwaita-1) >= %{libadwaita_version}
%if %{with cloudproviders}
BuildRequires: pkgconfig(cloudproviders)
%endif
BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version}
BuildRequires: pkgconfig(libhandy-1)
%if 0%{?flatpak}
BuildRequires: pkgconfig(libportal)
BuildRequires: pkgconfig(libportal-gtk4)
%endif
BuildRequires: pkgconfig(libseccomp)
BuildRequires: pkgconfig(libselinux)
BuildRequires: pkgconfig(libxml-2.0)
@ -67,14 +77,13 @@ BuildRequires: /usr/bin/appstream-util
Requires: glib2%{_isa} >= %{glib2_version}
Requires: gnome-autoar%{_isa} >= %{gnome_autoar_version}
Requires: gsettings-desktop-schemas%{_isa}
Requires: gtk4%{_isa} >= %{gtk4_version}
Requires: gtk3%{_isa} >= %{gtk3_version}
Requires: gvfs%{_isa}
Requires: libadwaita%{_isa} >= %{libadwaita_version}
# the main binary links against libnautilus-extension.so
# don't depend on soname, rather on exact version
Requires: %{name}-extensions%{_isa} = %{version}-%{release}
# For the org.freedesktop.Tracker3.Miner.Files GSettings schema.
Requires: tracker-miners
Requires: tracker3-miners
Provides: bundled(libgd)
@ -87,14 +96,14 @@ It is also responsible for handling the icons on the GNOME desktop.
%package extensions
Summary: Nautilus extensions library
License: LGPL-2.1-or-later
License: LGPLv2+
%description extensions
This package provides the libraries used by nautilus extensions.
%package devel
Summary: Support for developing nautilus extensions
License: LGPL-2.1-or-later
License: LGPLv2+
Requires: %{name}%{_isa} = %{version}-%{release}
Requires: %{name}-extensions%{_isa} = %{version}-%{release}
@ -114,7 +123,9 @@ sed -i '/-Werror/d' meson.build
-Dextensions=true \
-Dintrospection=true \
-Dselinux=true \
-Dcloudproviders=%{?with_cloudproviders:true}%{?!with_cloudproviders:false}
%if ! 0%{?flatpak}
-Dlibportal=false \
%endif
%{nil}
%meson_build
@ -124,7 +135,7 @@ sed -i '/-Werror/d' meson.build
%find_lang %{name}
%check
appstream-util validate-relax --nonet $RPM_BUILD_ROOT%{_metainfodir}/org.gnome.Nautilus.metainfo.xml
appstream-util validate-relax --nonet $RPM_BUILD_ROOT%{_datadir}/metainfo/org.gnome.Nautilus.appdata.xml
desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop
%files -f %{name}.lang
@ -144,204 +155,75 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop
%{_mandir}/man1/nautilus.1*
%{_mandir}/man1/nautilus-autorun-software.1*
%{_datadir}/glib-2.0/schemas/org.gnome.nautilus.gschema.xml
%{_datadir}/metainfo/org.gnome.Nautilus.appdata.xml
%{_datadir}/nautilus/
%{_datadir}/tracker3/domain-ontologies/org.gnome.Nautilus.domain.rule
%{_libdir}/nautilus/extensions-4/libnautilus-image-properties.so
%{_libdir}/nautilus/extensions-4/libtotem-properties-page.so
%{_metainfodir}/org.gnome.Nautilus.metainfo.xml
%{_libdir}/nautilus/extensions-3.0/libnautilus-image-properties.so
%{_libdir}/nautilus/extensions-3.0/libnautilus-sendto.so
%{_libdir}/nautilus/extensions-3.0/libtotem-properties-page.so
%files extensions
%license libnautilus-extension/LICENSE
%{_libdir}/libnautilus-extension.so.4*
%{_libdir}/girepository-1.0/Nautilus-4.0.typelib
%{_libdir}/libnautilus-extension.so.1*
%{_libdir}/girepository-1.0/*.typelib
%dir %{_libdir}/nautilus
%dir %{_libdir}/nautilus/extensions-4
%dir %{_libdir}/nautilus/extensions-3.0
%files devel
%{_includedir}/nautilus
%{_libdir}/pkgconfig/libnautilus-extension-4.pc
%{_libdir}/libnautilus-extension.so
%{_datadir}/gir-1.0/Nautilus-4.0.gir
%doc %{_datadir}/doc/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
## START: Generated by rpmautospec
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 46.2-3
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 46.2-2
- Bump release for June 2024 mass rebuild
* Tue May 28 2024 David King <amigadave@amigadave.com> - 46.2-1
- Update to 46.2
* Sun Apr 21 2024 David King <amigadave@amigadave.com> - 46.1-1
- Update to 46.1
* Tue Mar 19 2024 David King <amigadave@amigadave.com> - 46.0-1
- Update to 46.0
* Fri Mar 08 2024 David King <amigadave@amigadave.com> - 46~rc-1
- Update to 46.rc
* Wed Feb 14 2024 David King <amigadave@amigadave.com> - 46~beta-1
- Update to 46.beta
* Mon Jan 29 2024 David King <amigadave@amigadave.com> - 46~alpha.1-1
- Update to 46.alpha.1
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 46~alpha.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Jan 22 2024 David King <amigadave@amigadave.com> - 46~alpha.0-1
- Update to 46.alpha.0
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 45.2.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Dec 06 2023 Kalev Lember <klember@redhat.com> - 45.2.1-1
- Update to 45.2.1
* Sun Oct 22 2023 Kalev Lember <klember@redhat.com> - 45.1-1
- Update to 45.1
* Wed Sep 20 2023 Kalev Lember <klember@redhat.com> - 45.0-1
- Update to 45.0
* Tue Sep 05 2023 Kalev Lember <klember@redhat.com> - 45~rc-1
- Update to 45.rc
* Sat Aug 26 2023 Kalev Lember <klember@redhat.com> - 45~beta2-1
- Update to 45.beta2
* Fri Aug 11 2023 Kalev Lember <klember@redhat.com> - 45~beta-1
- Update to 45.beta
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 45~alpha-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Mon Jul 03 2023 Kalev Lember <klember@redhat.com> - 45~alpha-1
- Update to 45.alpha
* Mon Jun 26 2023 Ondrej Holy <oholy@redhat.com> - 44.2.1-2
- Disable cloudproviders in RHEL
* Mon Jun 05 2023 Kalev Lember <klember@redhat.com> - 44.2.1-1
- Update to 44.2.1
* Wed Jun 14 2023 Ondrej Holy <oholy@redhat.com> - 40.2-14
- Force reload current location when it reappears (#2184292)
* Wed May 31 2023 Kalev Lember <klember@redhat.com> - 44.2-1
- Update to 44.2
* Thu Apr 06 2023 Ondrej Holy <oholy@redhat.com> - 40.2-13
- Generate thumbnails when the preview icon is available (#2120263)
* Tue Apr 25 2023 David King <amigadave@amigadave.com> - 44.1-2
- Raise requirement on gtk4
* Wed Apr 05 2023 Ondrej Holy <oholy@redhat.com> - 40.2-12
- Try current location even if it is marked as gone (#2184292)
* Mon Apr 24 2023 David King <amigadave@amigadave.com> - 44.1-1
- Update to 44.1
* Thu Feb 23 2023 Ondrej Holy <oholy@redhat.com> - 40.2-11
- Try to own the name until after exporting skeleton (#2162302)
* Fri Mar 17 2023 David King <amigadave@amigadave.com> - 44.0-1
- Update to 44.0 (#2159040)
* Wed Feb 01 2023 Ondrej Holy <oholy@redhat.com> - 40.2-10
- Export FileManager1 iface from dbus_register vfunc (#2162302)
* Thu Mar 16 2023 Adam Williamson <awilliam@redhat.com> - 44~rc-2
- Backport MR #1151 to fix drag-and-drop (#2176766)
* Thu Sep 22 2022 Ondrej Holy <oholy@redhat.com> - 40.2-9
- Backport "_Copy Location" translations (#2099982)
* Sun Mar 05 2023 David King <amigadave@amigadave.com> - 44~rc-1
- Update to 44.rc
* Mon Jun 20 2022 Ondrej Holy <oholy@redhat.com> - 40.2-8
- Add toolbar action to copy current location (#2098578)
* Wed Feb 15 2023 David King <amigadave@amigadave.com> - 44~beta-1
- Update to 44.beta
* Wed Mar 16 2022 Ondrej Holy <oholy@redhat.com> - 40.2-7
- Update translations for encrypted archives support (#2064754)
* Fri Feb 10 2023 David King <amigadave@amigadave.com> - 44~alpha-2
- Update tracker-miners dependency
* Fri Dec 10 2021 Ondrej Holy <oholy@redhat.com> - 40.2-6
- Update Persian translation from upstream (#2003134)
* Mon Feb 06 2023 David King <amigadave@amigadave.com> - 44~alpha-1
- Update to 44.alpha
* Wed Dec 08 2021 Ondrej Holy <oholy@redhat.com> - 40.2-5
- Backport various upstream fixes for compress formats popover (#2029423)
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 43.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Dec 08 2021 Ondrej Holy <oholy@redhat.com> - 40.2-4
- Backport various upstream fixes for archive extraction (#1995615)
* Sun Jan 08 2023 David King <amigadave@amigadave.com> - 43.2-1
- Update to 43.2
* Fri Sep 17 2021 Ondrej Holy <oholy@redhat.com> - 40.2-3
- Backport translations for encrypted archives support (#2003134)
* Tue Dec 06 2022 David King <amigadave@amigadave.com> - 43.1-1
- Update to 43.1
* Tue Aug 10 2021 Ondrej Holy <oholy@redhat.com> - 40.2-2
- Add support for creation of password-protected archives (#1991575)
* Fri Sep 30 2022 Adam Williamson <awilliam@redhat.com> - 43.0-2
- Backport MR #977 to revert broken high-res thumbnails (#2127618)
* Tue Aug 10 2021 Ondrej Holy <oholy@redhat.com> - 40.2-1
- Update to 40.2 (#1991433)
* Tue Sep 20 2022 Kalev Lember <klember@redhat.com> - 43.0-1
- Update to 43.0
* Tue Sep 06 2022 Kalev Lember <klember@redhat.com> - 43~rc-1
- Update to 43.rc
* Wed Aug 17 2022 Kalev Lember <klember@redhat.com> - 43~beta.1-2
- Drop temporary libnautilus-extension ABI compat
* Tue Aug 09 2022 Kalev Lember <klember@redhat.com> - 43~beta.1-1
- Update to 43.beta.1
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 43~alpha-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Jul 18 2022 Kalev Lember <klember@redhat.com> - 43~alpha-3
- Rebuild
* Mon Jul 18 2022 Kalev Lember <klember@redhat.com> - 43~alpha-2
- Install previous libnautilus-extension soname for temporary ABI compat
* Mon Jul 18 2022 Kalev Lember <klember@redhat.com> - 43~alpha-1
- Update to 43.alpha
- Always build with libportal support
- Switch to gtk4
* Sun May 29 2022 David King <amigadave@amigadave.com> - 42.2-1
- Update to 42.2
* Sun Apr 24 2022 David King <amigadave@amigadave.com> - 42.1-1
- Update to 42.1.1
* Sat Mar 19 2022 David King <amigadave@amigadave.com> - 42.0-1
- Update to 42.0
* Mon Mar 07 2022 David King <amigadave@amigadave.com> - 42~rc-1
- Update to 42.rc
* Mon Feb 28 2022 David King <amigadave@amigadave.com> - 42~beta-2
- Fix thumbnail drop shadow refresh bug
* Sun Feb 13 2022 David King <amigadave@amigadave.com> - 42~beta-1
- Update to 42.beta
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 42~alpha-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Jan 12 2022 David King <amigadave@amigadave.com> - 42~alpha-2
- Rebuild against gnome-desktop4
* Sun Jan 09 2022 David King <amigadave@amigadave.com> - 42~alpha-1
- Update to 42.alpha
* Tue Dec 07 2021 Ondrej Holy <oholy@redhat.com> - 41.1-2
- Fix cropped popover for compress formats on X11
* Mon Nov 01 2021 Kalev Lember <klember@redhat.com> - 41.1-1
- Update to 41.1
* Fri Sep 17 2021 Kalev Lember <klember@redhat.com> - 41.0-1
- Update to 41.0
* Wed Sep 08 2021 Kalev Lember <klember@redhat.com> - 41~rc-1
- Update to 41.rc
* Mon Aug 16 2021 Kalev Lember <klember@redhat.com> - 41~beta-1
- Update to 41.beta
* Tue Aug 03 2021 Kalev Lember <klember@redhat.com> - 41~alpha-1
- Update to 41.alpha
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 40.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 40.1-4
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Thu May 20 2021 Ondrej Holy <oholy@redhat.com> - 40.1-3
- Add missing bundled(libgd) provides statement
@ -352,6 +234,9 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop
* Wed May 05 2021 Kalev Lember <klember@redhat.com> - 40.1-1
- Update to 40.1
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 40.0-2
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Mon Mar 22 2021 Kalev Lember <klember@redhat.com> - 40.0-1
- Update to 40.0
@ -2324,5 +2209,3 @@ subpackages
* Wed Apr 26 2000 Ramiro Estrugo <ramiro@eazel.com>
- created this thing
## END: Generated by rpmautospec

Loading…
Cancel
Save