Auto sync2gitlab import of nautilus-3.28.1-15.el8.src.rpm
This commit is contained in:
parent
7ea0443523
commit
d34efdadba
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/nautilus-3.28.1.tar.xz
|
69
0001-dbus-manager-Implement-trashing-files.patch
Normal file
69
0001-dbus-manager-Implement-trashing-files.patch
Normal file
@ -0,0 +1,69 @@
|
||||
From db2b7aea67c994ba8a6e5a9ffec245b1daebcdfb Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Mon, 6 Aug 2018 17:32:00 +0200
|
||||
Subject: [PATCH 01/11] dbus-manager: Implement trashing files
|
||||
|
||||
So desktop icons extension can use it.
|
||||
---
|
||||
data/dbus-interfaces.xml | 3 +++
|
||||
src/nautilus-dbus-manager.c | 24 ++++++++++++++++++++++++
|
||||
2 files changed, 27 insertions(+)
|
||||
|
||||
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
|
||||
index 35fb9945b..4588762a9 100644
|
||||
--- a/data/dbus-interfaces.xml
|
||||
+++ b/data/dbus-interfaces.xml
|
||||
@@ -35,5 +35,8 @@
|
||||
<arg type='s' name='DestinationDirectoryURI' direction='in'/>
|
||||
<arg type='s' name='DestinationDisplayName' direction='in'/>
|
||||
</method>
|
||||
+ <method name='TrashFiles'>
|
||||
+ <arg type='as' name='URIs' direction='in'/>
|
||||
+ </method>
|
||||
</interface>
|
||||
</node>
|
||||
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
|
||||
index 3611a2358..4da1c727b 100644
|
||||
--- a/src/nautilus-dbus-manager.c
|
||||
+++ b/src/nautilus-dbus-manager.c
|
||||
@@ -131,6 +131,26 @@ handle_empty_trash (NautilusDBusFileOperations *object,
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+handle_trash_files (NautilusDBusFileOperations *object,
|
||||
+ GDBusMethodInvocation *invocation,
|
||||
+ const gchar **sources)
|
||||
+{
|
||||
+ g_autolist (GFile) source_files = NULL;
|
||||
+ gint idx;
|
||||
+
|
||||
+ for (idx = 0; sources[idx] != NULL; idx++)
|
||||
+ {
|
||||
+ source_files = g_list_prepend (source_files,
|
||||
+ g_file_new_for_uri (sources[idx]));
|
||||
+ }
|
||||
+
|
||||
+ nautilus_file_operations_trash_or_delete (source_files, NULL, NULL, NULL);
|
||||
+
|
||||
+ nautilus_dbus_file_operations_complete_trash_files (object, invocation);
|
||||
+ return TRUE; /* invocation was handled */
|
||||
+}
|
||||
+
|
||||
static void
|
||||
nautilus_dbus_manager_init (NautilusDBusManager *self)
|
||||
{
|
||||
@@ -148,6 +168,10 @@ nautilus_dbus_manager_init (NautilusDBusManager *self)
|
||||
"handle-empty-trash",
|
||||
G_CALLBACK (handle_empty_trash),
|
||||
self);
|
||||
+ g_signal_connect (self->file_operations,
|
||||
+ "handle-trash-files",
|
||||
+ G_CALLBACK (handle_trash_files),
|
||||
+ self);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
2.17.1
|
||||
|
71
0002-dbus-manager-Implement-creation-of-new-folders.patch
Normal file
71
0002-dbus-manager-Implement-creation-of-new-folders.patch
Normal file
@ -0,0 +1,71 @@
|
||||
From d2be99e4528759d28985246a55c9d4513e78f918 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Mon, 6 Aug 2018 20:11:31 +0200
|
||||
Subject: [PATCH 02/11] dbus-manager: Implement creation of new folders
|
||||
|
||||
For the integration with the desktop icons extension.
|
||||
---
|
||||
data/dbus-interfaces.xml | 3 +++
|
||||
src/nautilus-dbus-manager.c | 26 ++++++++++++++++++++++++++
|
||||
2 files changed, 29 insertions(+)
|
||||
|
||||
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
|
||||
index 4588762a9..4e67f1393 100644
|
||||
--- a/data/dbus-interfaces.xml
|
||||
+++ b/data/dbus-interfaces.xml
|
||||
@@ -38,5 +38,8 @@
|
||||
<method name='TrashFiles'>
|
||||
<arg type='as' name='URIs' direction='in'/>
|
||||
</method>
|
||||
+ <method name='CreateFolder'>
|
||||
+ <arg type='s' name='URI' direction='in'/>
|
||||
+ </method>
|
||||
</interface>
|
||||
</node>
|
||||
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
|
||||
index 4da1c727b..337a73262 100644
|
||||
--- a/src/nautilus-dbus-manager.c
|
||||
+++ b/src/nautilus-dbus-manager.c
|
||||
@@ -94,6 +94,28 @@ handle_copy_file (NautilusDBusFileOperations *object,
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+handle_create_folder (NautilusDBusFileOperations *object,
|
||||
+ GDBusMethodInvocation *invocation,
|
||||
+ const gchar *uri)
|
||||
+{
|
||||
+ g_autoptr (GFile) file = NULL;
|
||||
+ g_autoptr (GFile) parent_file = NULL;
|
||||
+ g_autofree gchar *basename = NULL;
|
||||
+ g_autofree gchar *parent_file_uri = NULL;
|
||||
+
|
||||
+ file = g_file_new_for_uri (uri);
|
||||
+ basename = g_file_get_basename (file);
|
||||
+ parent_file = g_file_get_parent (file);
|
||||
+ parent_file_uri = g_file_get_uri (parent_file);
|
||||
+
|
||||
+ nautilus_file_operations_new_folder (NULL, parent_file_uri, basename,
|
||||
+ NULL, NULL);
|
||||
+
|
||||
+ nautilus_dbus_file_operations_complete_create_folder (object, invocation);
|
||||
+ return TRUE; /* invocation was handled */
|
||||
+}
|
||||
+
|
||||
static gboolean
|
||||
handle_copy_uris (NautilusDBusFileOperations *object,
|
||||
GDBusMethodInvocation *invocation,
|
||||
@@ -172,6 +194,10 @@ nautilus_dbus_manager_init (NautilusDBusManager *self)
|
||||
"handle-trash-files",
|
||||
G_CALLBACK (handle_trash_files),
|
||||
self);
|
||||
+ g_signal_connect (self->file_operations,
|
||||
+ "handle-create-folder",
|
||||
+ G_CALLBACK (handle_create_folder),
|
||||
+ self);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
2.17.1
|
||||
|
88
0003-dbus-manager-Implement-undo-redo.patch
Normal file
88
0003-dbus-manager-Implement-undo-redo.patch
Normal file
@ -0,0 +1,88 @@
|
||||
From 42ea37f93c134d55cd622e3e346726babaf56139 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Mon, 6 Aug 2018 20:12:00 +0200
|
||||
Subject: [PATCH 03/11] dbus-manager: Implement undo/redo
|
||||
|
||||
For the integration with the desktop icons extension.
|
||||
---
|
||||
data/dbus-interfaces.xml | 4 ++++
|
||||
src/nautilus-dbus-manager.c | 35 +++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 39 insertions(+)
|
||||
|
||||
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
|
||||
index 4e67f1393..2133bb99c 100644
|
||||
--- a/data/dbus-interfaces.xml
|
||||
+++ b/data/dbus-interfaces.xml
|
||||
@@ -41,5 +41,9 @@
|
||||
<method name='CreateFolder'>
|
||||
<arg type='s' name='URI' direction='in'/>
|
||||
</method>
|
||||
+ <method name='Undo'>
|
||||
+ </method>
|
||||
+ <method name='Redo'>
|
||||
+ </method>
|
||||
</interface>
|
||||
</node>
|
||||
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
|
||||
index 337a73262..bce6b5c4d 100644
|
||||
--- a/src/nautilus-dbus-manager.c
|
||||
+++ b/src/nautilus-dbus-manager.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "nautilus-generated.h"
|
||||
|
||||
#include "nautilus-file-operations.h"
|
||||
+#include "nautilus-file-undo-manager.h"
|
||||
|
||||
#define DEBUG_FLAG NAUTILUS_DEBUG_DBUS
|
||||
#include "nautilus-debug.h"
|
||||
@@ -94,6 +95,32 @@ handle_copy_file (NautilusDBusFileOperations *object,
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+handle_redo (NautilusDBusFileOperations *object,
|
||||
+ GDBusMethodInvocation *invocation)
|
||||
+{
|
||||
+ g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
|
||||
+
|
||||
+ undo_manager = nautilus_file_undo_manager_get ();
|
||||
+ nautilus_file_undo_manager_redo (NULL);
|
||||
+
|
||||
+ nautilus_dbus_file_operations_complete_redo (object, invocation);
|
||||
+ return TRUE; /* invocation was handled */
|
||||
+}
|
||||
+
|
||||
+static gboolean
|
||||
+handle_undo (NautilusDBusFileOperations *object,
|
||||
+ GDBusMethodInvocation *invocation)
|
||||
+{
|
||||
+ g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
|
||||
+
|
||||
+ undo_manager = nautilus_file_undo_manager_get ();
|
||||
+ nautilus_file_undo_manager_undo (NULL);
|
||||
+
|
||||
+ nautilus_dbus_file_operations_complete_undo (object, invocation);
|
||||
+ return TRUE; /* invocation was handled */
|
||||
+}
|
||||
+
|
||||
static gboolean
|
||||
handle_create_folder (NautilusDBusFileOperations *object,
|
||||
GDBusMethodInvocation *invocation,
|
||||
@@ -198,6 +225,14 @@ nautilus_dbus_manager_init (NautilusDBusManager *self)
|
||||
"handle-create-folder",
|
||||
G_CALLBACK (handle_create_folder),
|
||||
self);
|
||||
+ g_signal_connect (self->file_operations,
|
||||
+ "handle-undo",
|
||||
+ G_CALLBACK (handle_undo),
|
||||
+ self);
|
||||
+ g_signal_connect (self->file_operations,
|
||||
+ "handle-redo",
|
||||
+ G_CALLBACK (handle_redo),
|
||||
+ self);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
2.17.1
|
||||
|
46
0004-dbus-manager-Use-a-more-robust-copy-operation.patch
Normal file
46
0004-dbus-manager-Use-a-more-robust-copy-operation.patch
Normal file
@ -0,0 +1,46 @@
|
||||
From ef022816e3fe321d9ee9b5a2deab96ca718f7215 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Tue, 7 Aug 2018 10:47:28 +0200
|
||||
Subject: [PATCH 04/11] dbus-manager: Use a more robust copy operation
|
||||
|
||||
We were using the copy_file operation which seems to be quite buggy,
|
||||
Nautilus should probably drop that one soon, specially since no other
|
||||
part of Nautilus uses it.
|
||||
---
|
||||
src/nautilus-dbus-manager.c | 13 ++++---------
|
||||
1 file changed, 4 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
|
||||
index bce6b5c4d..8135c9650 100644
|
||||
--- a/src/nautilus-dbus-manager.c
|
||||
+++ b/src/nautilus-dbus-manager.c
|
||||
@@ -150,22 +150,17 @@ handle_copy_uris (NautilusDBusFileOperations *object,
|
||||
const gchar *destination)
|
||||
{
|
||||
GList *source_files = NULL;
|
||||
- GFile *dest_dir;
|
||||
gint idx;
|
||||
|
||||
- dest_dir = g_file_new_for_uri (destination);
|
||||
-
|
||||
for (idx = 0; sources[idx] != NULL; idx++)
|
||||
{
|
||||
- source_files = g_list_prepend (source_files,
|
||||
- g_file_new_for_uri (sources[idx]));
|
||||
+ source_files = g_list_prepend (source_files, g_strdup (sources[idx]));
|
||||
}
|
||||
|
||||
- nautilus_file_operations_copy (source_files, dest_dir, NULL, NULL, NULL);
|
||||
-
|
||||
- g_list_free_full (source_files, g_object_unref);
|
||||
- g_object_unref (dest_dir);
|
||||
+ nautilus_file_operations_copy_move (source_files, destination,
|
||||
+ GDK_ACTION_COPY, NULL, NULL, NULL);
|
||||
|
||||
+ g_list_free_full (source_files, g_free);
|
||||
nautilus_dbus_file_operations_complete_copy_uris (object, invocation);
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,88 @@
|
||||
From 32f347bd83495edf2bda746d17e613c868a7c379 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Tue, 7 Aug 2018 11:51:54 +0200
|
||||
Subject: [PATCH 05/11] file-operations: Don't crash if source file not present
|
||||
on creation
|
||||
|
||||
When creating a file it was checking if the file already exists, and if
|
||||
so it tried to give a new name based on the original file that was being
|
||||
duplicated from which is the case for the regular copy/paste and the
|
||||
template creation.
|
||||
|
||||
However, creating a file is not only about duplicating from another one,
|
||||
it also can come from creating a folder, that although in the UI it
|
||||
prevents doing so, it can still be done through the dbus operation.
|
||||
|
||||
Fix that by checking whether there is an actual source file, and if not,
|
||||
use the name provided as base name.
|
||||
---
|
||||
src/nautilus-file-operations.c | 36 ++++++++++++++++------------------
|
||||
1 file changed, 17 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
|
||||
index 4d84b98be..cf5e7f46b 100644
|
||||
--- a/src/nautilus-file-operations.c
|
||||
+++ b/src/nautilus-file-operations.c
|
||||
@@ -7324,20 +7324,18 @@ retry:
|
||||
{
|
||||
g_autofree char *filename2 = NULL;
|
||||
g_autofree char *suffix = NULL;
|
||||
- NautilusFile *file;
|
||||
|
||||
- file = nautilus_file_get (job->src);
|
||||
- if (nautilus_file_is_directory (file))
|
||||
- {
|
||||
- filename_base = filename;
|
||||
- }
|
||||
- else
|
||||
+ filename_base = filename;
|
||||
+ if (job->src != NULL)
|
||||
{
|
||||
- filename_base = eel_filename_strip_extension (filename);
|
||||
+ g_autoptr (NautilusFile) file = NULL;
|
||||
+ file = nautilus_file_get (job->src);
|
||||
+ if (!nautilus_file_is_directory (file))
|
||||
+ {
|
||||
+ filename_base = eel_filename_strip_extension (filename);
|
||||
+ }
|
||||
}
|
||||
|
||||
- nautilus_file_unref (file);
|
||||
-
|
||||
offset = strlen (filename_base);
|
||||
suffix = g_strdup (filename + offset);
|
||||
|
||||
@@ -7377,21 +7375,21 @@ retry:
|
||||
{
|
||||
g_autofree char *suffix = NULL;
|
||||
g_autofree gchar *filename2 = NULL;
|
||||
- NautilusFile *file;
|
||||
|
||||
g_clear_object (&dest);
|
||||
|
||||
- file = nautilus_file_get (job->src);
|
||||
- if (nautilus_file_is_directory (file))
|
||||
- {
|
||||
- filename_base = filename;
|
||||
- }
|
||||
- else
|
||||
+ filename_base = filename;
|
||||
+ if (job->src != NULL)
|
||||
{
|
||||
- filename_base = eel_filename_strip_extension (filename);
|
||||
+ g_autoptr (NautilusFile) file = NULL;
|
||||
+
|
||||
+ file = nautilus_file_get (job->src);
|
||||
+ if (!nautilus_file_is_directory (file))
|
||||
+ {
|
||||
+ filename_base = eel_filename_strip_extension (filename);
|
||||
+ }
|
||||
}
|
||||
|
||||
- nautilus_file_unref (file);
|
||||
|
||||
offset = strlen (filename_base);
|
||||
suffix = g_strdup (filename + offset);
|
||||
--
|
||||
2.17.1
|
||||
|
359
0006-properties-window-Keep-alive-properties-window-if-ca.patch
Normal file
359
0006-properties-window-Keep-alive-properties-window-if-ca.patch
Normal file
@ -0,0 +1,359 @@
|
||||
From 965a1fb9dcd468b9fc0b87279f3a4a33b6bd635c Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Tue, 7 Aug 2018 12:40:42 +0200
|
||||
Subject: [PATCH 06/11] properties-window: Keep alive properties window if
|
||||
called through DBus
|
||||
|
||||
The properties window can be used from within Nautilus, and therefore a
|
||||
dialog window makes sense, or from outside Nautilus, such as the
|
||||
FileManager dbus free desktop standard.
|
||||
|
||||
In the later, used for integration with things like desktop icons
|
||||
extensions, we need to keep the application alive since GApplication
|
||||
would close the application if no application window is alive after a
|
||||
timeout.
|
||||
|
||||
To fix this, this work makes the window hint a regular window if used
|
||||
from those cases.
|
||||
---
|
||||
src/nautilus-files-view.c | 6 +-
|
||||
src/nautilus-freedesktop-dbus.c | 10 ++-
|
||||
src/nautilus-pathbar.c | 3 +-
|
||||
src/nautilus-properties-window.c | 106 ++++++++++++++++++++++---------
|
||||
src/nautilus-properties-window.h | 10 ++-
|
||||
src/nautilus-window.c | 3 +-
|
||||
6 files changed, 101 insertions(+), 37 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
|
||||
index 8aff33e25..5395390e7 100644
|
||||
--- a/src/nautilus-files-view.c
|
||||
+++ b/src/nautilus-files-view.c
|
||||
@@ -2435,14 +2435,16 @@ action_properties (GSimpleAction *action,
|
||||
{
|
||||
files = g_list_append (NULL, nautilus_file_ref (priv->directory_as_file));
|
||||
|
||||
- nautilus_properties_window_present (files, GTK_WIDGET (view), NULL);
|
||||
+ nautilus_properties_window_present (files, GTK_WIDGET (view), NULL,
|
||||
+ NULL, NULL);
|
||||
|
||||
nautilus_file_list_free (files);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
- nautilus_properties_window_present (selection, GTK_WIDGET (view), NULL);
|
||||
+ nautilus_properties_window_present (selection, GTK_WIDGET (view), NULL,
|
||||
+ NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/src/nautilus-freedesktop-dbus.c b/src/nautilus-freedesktop-dbus.c
|
||||
index c4657aba3..b88809908 100644
|
||||
--- a/src/nautilus-freedesktop-dbus.c
|
||||
+++ b/src/nautilus-freedesktop-dbus.c
|
||||
@@ -114,6 +114,12 @@ skeleton_handle_show_folders_cb (NautilusFreedesktopFileManager1 *object,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+static void
|
||||
+properties_window_on_finished (gpointer user_data)
|
||||
+{
|
||||
+ g_application_release (g_application_get_default ());
|
||||
+}
|
||||
+
|
||||
static gboolean
|
||||
skeleton_handle_show_item_properties_cb (NautilusFreedesktopFileManager1 *object,
|
||||
GDBusMethodInvocation *invocation,
|
||||
@@ -133,7 +139,9 @@ skeleton_handle_show_item_properties_cb (NautilusFreedesktopFileManager1 *object
|
||||
|
||||
files = g_list_reverse (files);
|
||||
|
||||
- nautilus_properties_window_present (files, NULL, startup_id);
|
||||
+ g_application_hold (g_application_get_default ());
|
||||
+ nautilus_properties_window_present (files, NULL, startup_id,
|
||||
+ properties_window_on_finished, NULL);
|
||||
|
||||
nautilus_file_list_free (files);
|
||||
|
||||
diff --git a/src/nautilus-pathbar.c b/src/nautilus-pathbar.c
|
||||
index 630b8ed33..ea3d2b53f 100644
|
||||
--- a/src/nautilus-pathbar.c
|
||||
+++ b/src/nautilus-pathbar.c
|
||||
@@ -211,7 +211,8 @@ action_pathbar_properties (GSimpleAction *action,
|
||||
|
||||
files = g_list_append (NULL, nautilus_file_ref (priv->context_menu_file));
|
||||
|
||||
- nautilus_properties_window_present (files, GTK_WIDGET (self), NULL);
|
||||
+ nautilus_properties_window_present (files, GTK_WIDGET (self), NULL, NULL,
|
||||
+ NULL);
|
||||
|
||||
nautilus_file_list_free (files);
|
||||
}
|
||||
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
|
||||
index 8bd335a07..5405435cd 100644
|
||||
--- a/src/nautilus-properties-window.c
|
||||
+++ b/src/nautilus-properties-window.c
|
||||
@@ -152,6 +152,9 @@ typedef struct
|
||||
char *startup_id;
|
||||
char *pending_key;
|
||||
GHashTable *pending_files;
|
||||
+ NautilusPropertiesWindowCallback callback;
|
||||
+ gpointer callback_data;
|
||||
+ NautilusPropertiesWindow *window;
|
||||
} StartupData;
|
||||
|
||||
/* drag and drop definitions */
|
||||
@@ -197,8 +200,6 @@ static void is_directory_ready_callback (NautilusFile *file,
|
||||
gpointer data);
|
||||
static void cancel_group_change_callback (GroupChange *change);
|
||||
static void cancel_owner_change_callback (OwnerChange *change);
|
||||
-static void parent_widget_destroyed_callback (GtkWidget *widget,
|
||||
- gpointer callback_data);
|
||||
static void select_image_button_callback (GtkWidget *widget,
|
||||
NautilusPropertiesWindow *properties_window);
|
||||
static void set_icon (const char *icon_path,
|
||||
@@ -4811,12 +4812,15 @@ get_pending_key (GList *file_list)
|
||||
}
|
||||
|
||||
static StartupData *
|
||||
-startup_data_new (GList *original_files,
|
||||
- GList *target_files,
|
||||
- const char *pending_key,
|
||||
- GtkWidget *parent_widget,
|
||||
- GtkWindow *parent_window,
|
||||
- const char *startup_id)
|
||||
+startup_data_new (GList *original_files,
|
||||
+ GList *target_files,
|
||||
+ const char *pending_key,
|
||||
+ GtkWidget *parent_widget,
|
||||
+ GtkWindow *parent_window,
|
||||
+ const char *startup_id,
|
||||
+ NautilusPropertiesWindowCallback callback,
|
||||
+ gpointer callback_data,
|
||||
+ NautilusPropertiesWindow *window)
|
||||
{
|
||||
StartupData *data;
|
||||
GList *l;
|
||||
@@ -4830,6 +4834,9 @@ startup_data_new (GList *original_files,
|
||||
data->pending_key = g_strdup (pending_key);
|
||||
data->pending_files = g_hash_table_new (g_direct_hash,
|
||||
g_direct_equal);
|
||||
+ data->callback = callback;
|
||||
+ data->callback_data = callback_data;
|
||||
+ data->window = window;
|
||||
|
||||
for (l = data->target_files; l != NULL; l = l->next)
|
||||
{
|
||||
@@ -5149,7 +5156,7 @@ remove_window (NautilusPropertiesWindow *window)
|
||||
}
|
||||
}
|
||||
|
||||
-static GtkWindow *
|
||||
+static NautilusPropertiesWindow *
|
||||
get_existing_window (GList *file_list)
|
||||
{
|
||||
if (!file_list->next)
|
||||
@@ -5160,10 +5167,28 @@ get_existing_window (GList *file_list)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+static void
|
||||
+properties_window_finish (StartupData *data)
|
||||
+{
|
||||
+ if (data->parent_widget != NULL)
|
||||
+ {
|
||||
+ g_signal_handlers_disconnect_by_data (data->parent_widget,
|
||||
+ data);
|
||||
+ }
|
||||
+ if (data->window != NULL)
|
||||
+ {
|
||||
+ g_signal_handlers_disconnect_by_data (data->window,
|
||||
+ data);
|
||||
+ }
|
||||
+
|
||||
+ remove_pending (data, TRUE, TRUE, FALSE);
|
||||
+ startup_data_free (data);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
cancel_create_properties_window_callback (gpointer callback_data)
|
||||
{
|
||||
- remove_pending ((StartupData *) callback_data, TRUE, FALSE, TRUE);
|
||||
+ properties_window_finish ((StartupData *) callback_data);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -5172,7 +5197,7 @@ parent_widget_destroyed_callback (GtkWidget *widget,
|
||||
{
|
||||
g_assert (widget == ((StartupData *) callback_data)->parent_widget);
|
||||
|
||||
- remove_pending ((StartupData *) callback_data, TRUE, TRUE, FALSE);
|
||||
+ properties_window_finish ((StartupData *) callback_data);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -5203,16 +5228,24 @@ remove_pending (StartupData *startup_data,
|
||||
eel_timed_wait_stop
|
||||
(cancel_create_properties_window_callback, startup_data);
|
||||
}
|
||||
- if (cancel_destroy_handler && startup_data->parent_widget)
|
||||
+ g_hash_table_remove (pending_lists, startup_data->pending_key);
|
||||
+}
|
||||
+
|
||||
+static gboolean
|
||||
+widget_on_destroy (GtkWidget *widget,
|
||||
+ gpointer user_data)
|
||||
+{
|
||||
+ StartupData *data = (StartupData *) user_data;
|
||||
+
|
||||
+
|
||||
+ if (data->callback != NULL)
|
||||
{
|
||||
- g_signal_handlers_disconnect_by_func (startup_data->parent_widget,
|
||||
- G_CALLBACK (parent_widget_destroyed_callback),
|
||||
- startup_data);
|
||||
+ data->callback (data->callback_data);
|
||||
}
|
||||
|
||||
- g_hash_table_remove (pending_lists, startup_data->pending_key);
|
||||
+ properties_window_finish (data);
|
||||
|
||||
- startup_data_free (startup_data);
|
||||
+ return GDK_EVENT_PROPAGATE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -5232,29 +5265,34 @@ is_directory_ready_callback (NautilusFile *file,
|
||||
new_window = create_properties_window (startup_data);
|
||||
|
||||
add_window (new_window);
|
||||
+ startup_data->window = new_window;
|
||||
|
||||
remove_pending (startup_data, FALSE, TRUE, TRUE);
|
||||
|
||||
gtk_window_present (GTK_WINDOW (new_window));
|
||||
+ g_signal_connect(GTK_WIDGET (new_window), "destroy",
|
||||
+ G_CALLBACK (widget_on_destroy), startup_data);
|
||||
}
|
||||
}
|
||||
|
||||
-
|
||||
void
|
||||
-nautilus_properties_window_present (GList *original_files,
|
||||
- GtkWidget *parent_widget,
|
||||
- const gchar *startup_id)
|
||||
+nautilus_properties_window_present (GList *original_files,
|
||||
+ GtkWidget *parent_widget,
|
||||
+ const gchar *startup_id,
|
||||
+ NautilusPropertiesWindowCallback callback,
|
||||
+ gpointer callback_data)
|
||||
{
|
||||
GList *l, *next;
|
||||
- GtkWidget *parent_window;
|
||||
+ GtkWindow *parent_window;
|
||||
StartupData *startup_data;
|
||||
GList *target_files;
|
||||
- GtkWindow *existing_window;
|
||||
+ NautilusPropertiesWindow *existing_window;
|
||||
char *pending_key;
|
||||
|
||||
g_return_if_fail (original_files != NULL);
|
||||
g_return_if_fail (parent_widget == NULL || GTK_IS_WIDGET (parent_widget));
|
||||
|
||||
+
|
||||
/* Create the hash tables first time through. */
|
||||
if (windows == NULL)
|
||||
{
|
||||
@@ -5272,15 +5310,19 @@ nautilus_properties_window_present (GList *original_files,
|
||||
{
|
||||
if (parent_widget)
|
||||
{
|
||||
- gtk_window_set_screen (existing_window,
|
||||
+ gtk_window_set_screen (GTK_WINDOW (existing_window),
|
||||
gtk_widget_get_screen (parent_widget));
|
||||
}
|
||||
else if (startup_id)
|
||||
{
|
||||
- gtk_window_set_startup_id (existing_window, startup_id);
|
||||
+ gtk_window_set_startup_id (GTK_WINDOW (existing_window), startup_id);
|
||||
}
|
||||
|
||||
- gtk_window_present (existing_window);
|
||||
+ gtk_window_present (GTK_WINDOW (existing_window));
|
||||
+ startup_data = startup_data_new (NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
+ callback, callback_data, existing_window);
|
||||
+ g_signal_connect(GTK_WIDGET (existing_window), "destroy",
|
||||
+ G_CALLBACK (widget_on_destroy), startup_data);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -5290,6 +5332,9 @@ nautilus_properties_window_present (GList *original_files,
|
||||
/* Look to see if we're already waiting for a window for this file. */
|
||||
if (g_hash_table_lookup (pending_lists, pending_key) != NULL)
|
||||
{
|
||||
+ /* FIXME: No callback is done if this happen. In practice, it's a quite
|
||||
+ * corner case
|
||||
+ */
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -5297,7 +5342,7 @@ nautilus_properties_window_present (GList *original_files,
|
||||
|
||||
if (parent_widget)
|
||||
{
|
||||
- parent_window = gtk_widget_get_ancestor (parent_widget, GTK_TYPE_WINDOW);
|
||||
+ parent_window = GTK_WINDOW (gtk_widget_get_ancestor (parent_widget, GTK_TYPE_WINDOW));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -5308,8 +5353,11 @@ nautilus_properties_window_present (GList *original_files,
|
||||
target_files,
|
||||
pending_key,
|
||||
parent_widget,
|
||||
- GTK_WINDOW (parent_window),
|
||||
- startup_id);
|
||||
+ parent_window,
|
||||
+ startup_id,
|
||||
+ callback,
|
||||
+ callback_data,
|
||||
+ NULL);
|
||||
|
||||
nautilus_file_list_free (target_files);
|
||||
g_free (pending_key);
|
||||
diff --git a/src/nautilus-properties-window.h b/src/nautilus-properties-window.h
|
||||
index 9eff54c4e..e8d6a90e9 100644
|
||||
--- a/src/nautilus-properties-window.h
|
||||
+++ b/src/nautilus-properties-window.h
|
||||
@@ -59,8 +59,12 @@ typedef struct NautilusPropertiesWindowClass NautilusPropertiesWindowClass;
|
||||
|
||||
GType nautilus_properties_window_get_type (void);
|
||||
|
||||
-void nautilus_properties_window_present (GList *files,
|
||||
- GtkWidget *parent_widget,
|
||||
- const gchar *startup_id);
|
||||
+typedef void (* NautilusPropertiesWindowCallback) (gpointer callback_data);
|
||||
+
|
||||
+void nautilus_properties_window_present (GList *files,
|
||||
+ GtkWidget *parent_widget,
|
||||
+ const gchar *startup_id,
|
||||
+ NautilusPropertiesWindowCallback callback,
|
||||
+ gpointer callback_data);
|
||||
|
||||
#endif /* NAUTILUS_PROPERTIES_WINDOW_H */
|
||||
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
|
||||
index 41c4623be..a6ee4d489 100644
|
||||
--- a/src/nautilus-window.c
|
||||
+++ b/src/nautilus-window.c
|
||||
@@ -1309,7 +1309,8 @@ action_properties (GSimpleAction *action,
|
||||
file = nautilus_file_get (priv->selected_file);
|
||||
|
||||
list = g_list_append (NULL, file);
|
||||
- nautilus_properties_window_present (list, GTK_WIDGET (window), NULL);
|
||||
+ nautilus_properties_window_present (list, GTK_WIDGET (window), NULL, NULL,
|
||||
+ NULL);
|
||||
nautilus_file_list_free (list);
|
||||
|
||||
g_clear_object (&priv->selected_file);
|
||||
--
|
||||
2.17.1
|
||||
|
149
0007-dbus-manager-Keep-application-alive-for-operations.patch
Normal file
149
0007-dbus-manager-Keep-application-alive-for-operations.patch
Normal file
@ -0,0 +1,149 @@
|
||||
From 80b807d9e52fdc3e5e0af5a2d4dd61fdb0a39bc8 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Tue, 7 Aug 2018 21:08:21 +0200
|
||||
Subject: [PATCH 07/11] dbus-manager: Keep application alive for operations
|
||||
|
||||
Operations started from Nautilus windows have the persistence handler,
|
||||
however, when not using windows like when invoked through DBus the
|
||||
application could die after a timeout.
|
||||
|
||||
This would stop the operation in the middle of its process, with
|
||||
possible data loss.
|
||||
|
||||
Make sure we keep the application alive while this is happening.
|
||||
---
|
||||
src/nautilus-dbus-manager.c | 55 +++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 52 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
|
||||
index 8135c9650..0d5137292 100644
|
||||
--- a/src/nautilus-dbus-manager.c
|
||||
+++ b/src/nautilus-dbus-manager.c
|
||||
@@ -95,13 +95,29 @@ handle_copy_file (NautilusDBusFileOperations *object,
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
|
||||
+static void
|
||||
+undo_redo_on_finished (gpointer user_data)
|
||||
+{
|
||||
+ g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
|
||||
+ int *handler_id = (int *) user_data;
|
||||
+
|
||||
+ undo_manager = nautilus_file_undo_manager_get ();
|
||||
+ g_signal_handler_disconnect (undo_manager, *handler_id);
|
||||
+ g_application_release (g_application_get_default ());
|
||||
+ g_free (handler_id);
|
||||
+}
|
||||
+
|
||||
static gboolean
|
||||
handle_redo (NautilusDBusFileOperations *object,
|
||||
GDBusMethodInvocation *invocation)
|
||||
{
|
||||
g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
|
||||
+ gint *handler_id = g_new0(int, 1);
|
||||
|
||||
undo_manager = nautilus_file_undo_manager_get ();
|
||||
+ *handler_id = g_signal_connect_swapped (undo_manager, "undo-changed",
|
||||
+ G_CALLBACK (undo_redo_on_finished),
|
||||
+ handler_id);
|
||||
nautilus_file_undo_manager_redo (NULL);
|
||||
|
||||
nautilus_dbus_file_operations_complete_redo (object, invocation);
|
||||
@@ -113,14 +129,26 @@ handle_undo (NautilusDBusFileOperations *object,
|
||||
GDBusMethodInvocation *invocation)
|
||||
{
|
||||
g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
|
||||
+ gint *handler_id = g_new0(int, 1);
|
||||
|
||||
undo_manager = nautilus_file_undo_manager_get ();
|
||||
+ *handler_id = g_signal_connect_swapped (undo_manager, "undo-changed",
|
||||
+ G_CALLBACK (undo_redo_on_finished),
|
||||
+ handler_id);
|
||||
nautilus_file_undo_manager_undo (NULL);
|
||||
|
||||
nautilus_dbus_file_operations_complete_undo (object, invocation);
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
|
||||
+static void
|
||||
+create_folder_on_finished (GFile *new_file,
|
||||
+ gboolean success,
|
||||
+ gpointer callback_data)
|
||||
+{
|
||||
+ g_application_release (g_application_get_default ());
|
||||
+}
|
||||
+
|
||||
static gboolean
|
||||
handle_create_folder (NautilusDBusFileOperations *object,
|
||||
GDBusMethodInvocation *invocation,
|
||||
@@ -136,13 +164,22 @@ handle_create_folder (NautilusDBusFileOperations *object,
|
||||
parent_file = g_file_get_parent (file);
|
||||
parent_file_uri = g_file_get_uri (parent_file);
|
||||
|
||||
+ g_application_hold (g_application_get_default ());
|
||||
nautilus_file_operations_new_folder (NULL, parent_file_uri, basename,
|
||||
- NULL, NULL);
|
||||
+ create_folder_on_finished, NULL);
|
||||
|
||||
nautilus_dbus_file_operations_complete_create_folder (object, invocation);
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
|
||||
+static void
|
||||
+copy_on_finished (GHashTable *debutting_uris,
|
||||
+ gboolean success,
|
||||
+ gpointer callback_data)
|
||||
+{
|
||||
+ g_application_release (g_application_get_default ());
|
||||
+}
|
||||
+
|
||||
static gboolean
|
||||
handle_copy_uris (NautilusDBusFileOperations *object,
|
||||
GDBusMethodInvocation *invocation,
|
||||
@@ -157,14 +194,16 @@ handle_copy_uris (NautilusDBusFileOperations *object,
|
||||
source_files = g_list_prepend (source_files, g_strdup (sources[idx]));
|
||||
}
|
||||
|
||||
+ g_application_hold (g_application_get_default ());
|
||||
nautilus_file_operations_copy_move (source_files, destination,
|
||||
- GDK_ACTION_COPY, NULL, NULL, NULL);
|
||||
+ GDK_ACTION_COPY, NULL, copy_on_finished, NULL);
|
||||
|
||||
g_list_free_full (source_files, g_free);
|
||||
nautilus_dbus_file_operations_complete_copy_uris (object, invocation);
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
|
||||
+/* FIXME: Needs a callback for maintaining alive the application */
|
||||
static gboolean
|
||||
handle_empty_trash (NautilusDBusFileOperations *object,
|
||||
GDBusMethodInvocation *invocation)
|
||||
@@ -175,6 +214,14 @@ handle_empty_trash (NautilusDBusFileOperations *object,
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
|
||||
+static void
|
||||
+trash_on_finished (GHashTable *debutting_uris,
|
||||
+ gboolean user_cancel,
|
||||
+ gpointer callback_data)
|
||||
+{
|
||||
+ g_application_release (g_application_get_default ());
|
||||
+}
|
||||
+
|
||||
static gboolean
|
||||
handle_trash_files (NautilusDBusFileOperations *object,
|
||||
GDBusMethodInvocation *invocation,
|
||||
@@ -189,7 +236,9 @@ handle_trash_files (NautilusDBusFileOperations *object,
|
||||
g_file_new_for_uri (sources[idx]));
|
||||
}
|
||||
|
||||
- nautilus_file_operations_trash_or_delete (source_files, NULL, NULL, NULL);
|
||||
+ g_application_hold (g_application_get_default ());
|
||||
+ nautilus_file_operations_trash_or_delete (source_files, NULL,
|
||||
+ trash_on_finished, NULL);
|
||||
|
||||
nautilus_dbus_file_operations_complete_trash_files (object, invocation);
|
||||
return TRUE; /* invocation was handled */
|
||||
--
|
||||
2.17.1
|
||||
|
209
0008-dbus-manager-Drop-copy-file-operation.patch
Normal file
209
0008-dbus-manager-Drop-copy-file-operation.patch
Normal file
@ -0,0 +1,209 @@
|
||||
From 474ed07f64df1381440b8692d7d500d26014c618 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Tue, 7 Aug 2018 21:25:01 +0200
|
||||
Subject: [PATCH 08/11] dbus-manager: Drop copy file operation
|
||||
|
||||
It was truly unreliable and not working clearly. We have a more powerful
|
||||
and simpler API with CopyURIs, so there is no point to have this one.
|
||||
|
||||
This commits drops the DBus API. Note that the DBus version is not
|
||||
bumped, I believe this DBus API is not used by any external service
|
||||
given how broken was it.
|
||||
---
|
||||
data/dbus-interfaces.xml | 6 ---
|
||||
src/nautilus-dbus-manager.c | 69 ++++++++++++++--------------------
|
||||
src/nautilus-file-operations.c | 41 --------------------
|
||||
src/nautilus-file-operations.h | 7 ----
|
||||
4 files changed, 29 insertions(+), 94 deletions(-)
|
||||
|
||||
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
|
||||
index 2133bb99c..20ffadde1 100644
|
||||
--- a/data/dbus-interfaces.xml
|
||||
+++ b/data/dbus-interfaces.xml
|
||||
@@ -29,12 +29,6 @@
|
||||
</method>
|
||||
<method name='EmptyTrash'>
|
||||
</method>"
|
||||
- <method name='CopyFile'>
|
||||
- <arg type='s' name='SourceFileURI' direction='in'/>
|
||||
- <arg type='s' name='SourceDisplayName' direction='in'/>
|
||||
- <arg type='s' name='DestinationDirectoryURI' direction='in'/>
|
||||
- <arg type='s' name='DestinationDisplayName' direction='in'/>
|
||||
- </method>
|
||||
<method name='TrashFiles'>
|
||||
<arg type='as' name='URIs' direction='in'/>
|
||||
</method>
|
||||
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
|
||||
index 0d5137292..1ac6e12c2 100644
|
||||
--- a/src/nautilus-dbus-manager.c
|
||||
+++ b/src/nautilus-dbus-manager.c
|
||||
@@ -61,40 +61,6 @@ nautilus_dbus_manager_dispose (GObject *object)
|
||||
G_OBJECT_CLASS (nautilus_dbus_manager_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
-static gboolean
|
||||
-handle_copy_file (NautilusDBusFileOperations *object,
|
||||
- GDBusMethodInvocation *invocation,
|
||||
- const gchar *source_uri,
|
||||
- const gchar *source_display_name,
|
||||
- const gchar *dest_dir_uri,
|
||||
- const gchar *dest_name)
|
||||
-{
|
||||
- GFile *source_file, *target_dir;
|
||||
- const gchar *target_name = NULL, *source_name = NULL;
|
||||
-
|
||||
- source_file = g_file_new_for_uri (source_uri);
|
||||
- target_dir = g_file_new_for_uri (dest_dir_uri);
|
||||
-
|
||||
- if (dest_name != NULL && dest_name[0] != '\0')
|
||||
- {
|
||||
- target_name = dest_name;
|
||||
- }
|
||||
-
|
||||
- if (source_display_name != NULL && source_display_name[0] != '\0')
|
||||
- {
|
||||
- source_name = source_display_name;
|
||||
- }
|
||||
-
|
||||
- nautilus_file_operations_copy_file (source_file, target_dir, source_name, target_name,
|
||||
- NULL, NULL, NULL);
|
||||
-
|
||||
- g_object_unref (source_file);
|
||||
- g_object_unref (target_dir);
|
||||
-
|
||||
- nautilus_dbus_file_operations_complete_copy_file (object, invocation);
|
||||
- return TRUE; /* invocation was handled */
|
||||
-}
|
||||
-
|
||||
static void
|
||||
undo_redo_on_finished (gpointer user_data)
|
||||
{
|
||||
@@ -173,9 +139,9 @@ handle_create_folder (NautilusDBusFileOperations *object,
|
||||
}
|
||||
|
||||
static void
|
||||
-copy_on_finished (GHashTable *debutting_uris,
|
||||
- gboolean success,
|
||||
- gpointer callback_data)
|
||||
+copy_move_on_finished (GHashTable *debutting_uris,
|
||||
+ gboolean success,
|
||||
+ gpointer callback_data)
|
||||
{
|
||||
g_application_release (g_application_get_default ());
|
||||
}
|
||||
@@ -196,7 +162,30 @@ handle_copy_uris (NautilusDBusFileOperations *object,
|
||||
|
||||
g_application_hold (g_application_get_default ());
|
||||
nautilus_file_operations_copy_move (source_files, destination,
|
||||
- GDK_ACTION_COPY, NULL, copy_on_finished, NULL);
|
||||
+ GDK_ACTION_COPY, NULL, copy_move_on_finished, NULL);
|
||||
+
|
||||
+ g_list_free_full (source_files, g_free);
|
||||
+ nautilus_dbus_file_operations_complete_copy_uris (object, invocation);
|
||||
+ return TRUE; /* invocation was handled */
|
||||
+}
|
||||
+
|
||||
+static gboolean
|
||||
+handle_move_uris (NautilusDBusFileOperations *object,
|
||||
+ GDBusMethodInvocation *invocation,
|
||||
+ const gchar **sources,
|
||||
+ const gchar *destination)
|
||||
+{
|
||||
+ GList *source_files = NULL;
|
||||
+ gint idx;
|
||||
+
|
||||
+ for (idx = 0; sources[idx] != NULL; idx++)
|
||||
+ {
|
||||
+ source_files = g_list_prepend (source_files, g_strdup (sources[idx]));
|
||||
+ }
|
||||
+
|
||||
+ g_application_hold (g_application_get_default ());
|
||||
+ nautilus_file_operations_copy_move (source_files, destination,
|
||||
+ GDK_ACTION_MOVE, NULL, copy_move_on_finished, NULL);
|
||||
|
||||
g_list_free_full (source_files, g_free);
|
||||
nautilus_dbus_file_operations_complete_copy_uris (object, invocation);
|
||||
@@ -254,8 +243,8 @@ nautilus_dbus_manager_init (NautilusDBusManager *self)
|
||||
G_CALLBACK (handle_copy_uris),
|
||||
self);
|
||||
g_signal_connect (self->file_operations,
|
||||
- "handle-copy-file",
|
||||
- G_CALLBACK (handle_copy_file),
|
||||
+ "handle-move-uris",
|
||||
+ G_CALLBACK (handle_move_uris),
|
||||
self);
|
||||
g_signal_connect (self->file_operations,
|
||||
"handle-empty-trash",
|
||||
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
|
||||
index cf5e7f46b..e306e7eff 100644
|
||||
--- a/src/nautilus-file-operations.c
|
||||
+++ b/src/nautilus-file-operations.c
|
||||
@@ -5705,47 +5705,6 @@ copy_task_thread_func (GTask *task,
|
||||
&source_info, &transfer_info);
|
||||
}
|
||||
|
||||
-void
|
||||
-nautilus_file_operations_copy_file (GFile *source_file,
|
||||
- GFile *target_dir,
|
||||
- const gchar *source_display_name,
|
||||
- const gchar *new_name,
|
||||
- GtkWindow *parent_window,
|
||||
- NautilusCopyCallback done_callback,
|
||||
- gpointer done_callback_data)
|
||||
-{
|
||||
- GTask *task;
|
||||
- CopyMoveJob *job;
|
||||
-
|
||||
- job = op_job_new (CopyMoveJob, parent_window);
|
||||
- job->done_callback = done_callback;
|
||||
- job->done_callback_data = done_callback_data;
|
||||
- job->files = g_list_append (NULL, g_object_ref (source_file));
|
||||
- job->destination = g_object_ref (target_dir);
|
||||
- /* Need to indicate the destination for the operation notification open
|
||||
- * button. */
|
||||
- nautilus_progress_info_set_destination (((CommonJob *) job)->progress, target_dir);
|
||||
- job->target_name = g_strdup (new_name);
|
||||
- job->debuting_files = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, NULL);
|
||||
-
|
||||
- if (source_display_name != NULL)
|
||||
- {
|
||||
- gchar *path;
|
||||
-
|
||||
- path = g_build_filename ("/", source_display_name, NULL);
|
||||
- job->fake_display_source = g_file_new_for_path (path);
|
||||
-
|
||||
- g_free (path);
|
||||
- }
|
||||
-
|
||||
- inhibit_power_manager ((CommonJob *) job, _("Copying Files"));
|
||||
-
|
||||
- task = g_task_new (NULL, job->common.cancellable, copy_task_done, job);
|
||||
- g_task_set_task_data (task, job, NULL);
|
||||
- g_task_run_in_thread (task, copy_task_thread_func);
|
||||
- g_object_unref (task);
|
||||
-}
|
||||
-
|
||||
void
|
||||
nautilus_file_operations_copy (GList *files,
|
||||
GFile *target_dir,
|
||||
diff --git a/src/nautilus-file-operations.h b/src/nautilus-file-operations.h
|
||||
index e8c6ed393..2a9c6a6a0 100644
|
||||
--- a/src/nautilus-file-operations.h
|
||||
+++ b/src/nautilus-file-operations.h
|
||||
@@ -57,13 +57,6 @@ void nautilus_file_operations_copy_move (const GList *item_uris,
|
||||
GtkWidget *parent_view,
|
||||
NautilusCopyCallback done_callback,
|
||||
gpointer done_callback_data);
|
||||
-void nautilus_file_operations_copy_file (GFile *source_file,
|
||||
- GFile *target_dir,
|
||||
- const gchar *source_display_name,
|
||||
- const gchar *new_name,
|
||||
- GtkWindow *parent_window,
|
||||
- NautilusCopyCallback done_callback,
|
||||
- gpointer done_callback_data);
|
||||
void nautilus_file_operations_empty_trash (GtkWidget *parent_view);
|
||||
void nautilus_file_operations_new_folder (GtkWidget *parent_view,
|
||||
const char *parent_dir_uri,
|
||||
--
|
||||
2.17.1
|
||||
|
28
0009-dbus-Implement-move-operation.patch
Normal file
28
0009-dbus-Implement-move-operation.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From 60ba10283b631f08bd7e763a63a1a8e048b66379 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@gnome.org>
|
||||
Date: Wed, 8 Aug 2018 14:07:48 +0200
|
||||
Subject: [PATCH 09/11] dbus: Implement move operation
|
||||
|
||||
Analog to the copy operation.
|
||||
---
|
||||
data/dbus-interfaces.xml | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
|
||||
index 20ffadde1..64176225c 100644
|
||||
--- a/data/dbus-interfaces.xml
|
||||
+++ b/data/dbus-interfaces.xml
|
||||
@@ -27,6 +27,10 @@
|
||||
<arg type='as' name='SourceFilesURIList' direction='in'/>
|
||||
<arg type='s' name='DestinationDirectoryURI' direction='in'/>
|
||||
</method>
|
||||
+ <method name='MoveURIs'>
|
||||
+ <arg type='as' name='SourceFilesURIList' direction='in'/>
|
||||
+ <arg type='s' name='DestinationDirectoryURI' direction='in'/>
|
||||
+ </method>
|
||||
<method name='EmptyTrash'>
|
||||
</method>"
|
||||
<method name='TrashFiles'>
|
||||
--
|
||||
2.17.1
|
||||
|
45
0010-dbus-manager-Fix-double-free.patch
Normal file
45
0010-dbus-manager-Fix-double-free.patch
Normal file
@ -0,0 +1,45 @@
|
||||
From 7cea30b7357cf246cbab67e895c90ebb5cc6a772 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@gnome.org>
|
||||
Date: Wed, 8 Aug 2018 14:32:00 +0200
|
||||
Subject: [PATCH 10/11] dbus-manager: Fix double free
|
||||
|
||||
nautilus_undo_manager_get doesn't return a new reference, so we
|
||||
shouldn't use g_autoptr.
|
||||
---
|
||||
src/nautilus-dbus-manager.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
|
||||
index 1ac6e12c2..728b1dea2 100644
|
||||
--- a/src/nautilus-dbus-manager.c
|
||||
+++ b/src/nautilus-dbus-manager.c
|
||||
@@ -64,7 +64,7 @@ nautilus_dbus_manager_dispose (GObject *object)
|
||||
static void
|
||||
undo_redo_on_finished (gpointer user_data)
|
||||
{
|
||||
- g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
|
||||
+ NautilusFileUndoManager *undo_manager = NULL;
|
||||
int *handler_id = (int *) user_data;
|
||||
|
||||
undo_manager = nautilus_file_undo_manager_get ();
|
||||
@@ -77,7 +77,7 @@ static gboolean
|
||||
handle_redo (NautilusDBusFileOperations *object,
|
||||
GDBusMethodInvocation *invocation)
|
||||
{
|
||||
- g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
|
||||
+ NautilusFileUndoManager *undo_manager = NULL;
|
||||
gint *handler_id = g_new0(int, 1);
|
||||
|
||||
undo_manager = nautilus_file_undo_manager_get ();
|
||||
@@ -94,7 +94,7 @@ static gboolean
|
||||
handle_undo (NautilusDBusFileOperations *object,
|
||||
GDBusMethodInvocation *invocation)
|
||||
{
|
||||
- g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
|
||||
+ NautilusFileUndoManager *undo_manager = NULL;
|
||||
gint *handler_id = g_new0(int, 1);
|
||||
|
||||
undo_manager = nautilus_file_undo_manager_get ();
|
||||
--
|
||||
2.17.1
|
||||
|
36
0011-dbus-manager-Fix-not-holding-application.patch
Normal file
36
0011-dbus-manager-Fix-not-holding-application.patch
Normal file
@ -0,0 +1,36 @@
|
||||
From 12fa036ee7689774cfdf941ae7fda04d18d34ae8 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@gnome.org>
|
||||
Date: Wed, 8 Aug 2018 14:32:56 +0200
|
||||
Subject: [PATCH 11/11] dbus-manager: Fix not holding application
|
||||
|
||||
The code was releasing it on the callback but forgot to put the hold
|
||||
on the initial call.
|
||||
---
|
||||
src/nautilus-dbus-manager.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
|
||||
index 728b1dea2..f11ede0ad 100644
|
||||
--- a/src/nautilus-dbus-manager.c
|
||||
+++ b/src/nautilus-dbus-manager.c
|
||||
@@ -80,6 +80,8 @@ handle_redo (NautilusDBusFileOperations *object,
|
||||
NautilusFileUndoManager *undo_manager = NULL;
|
||||
gint *handler_id = g_new0(int, 1);
|
||||
|
||||
+ g_application_hold (g_application_get_default ());
|
||||
+
|
||||
undo_manager = nautilus_file_undo_manager_get ();
|
||||
*handler_id = g_signal_connect_swapped (undo_manager, "undo-changed",
|
||||
G_CALLBACK (undo_redo_on_finished),
|
||||
@@ -97,6 +99,8 @@ handle_undo (NautilusDBusFileOperations *object,
|
||||
NautilusFileUndoManager *undo_manager = NULL;
|
||||
gint *handler_id = g_new0(int, 1);
|
||||
|
||||
+ g_application_hold (g_application_get_default ());
|
||||
+
|
||||
undo_manager = nautilus_file_undo_manager_get ();
|
||||
*handler_id = g_signal_connect_swapped (undo_manager, "undo-changed",
|
||||
G_CALLBACK (undo_redo_on_finished),
|
||||
--
|
||||
2.17.1
|
||||
|
552
0012-clipboard-Use-text-based-clipboard-only.patch
Normal file
552
0012-clipboard-Use-text-based-clipboard-only.patch
Normal file
@ -0,0 +1,552 @@
|
||||
From 228971be31f92625f641531e1b78b8c8e63677b0 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Tue, 31 Jul 2018 22:10:03 +0200
|
||||
Subject: [PATCH] clipboard: Use text based clipboard only
|
||||
|
||||
---
|
||||
src/nautilus-canvas-view.c | 13 ++++++-------
|
||||
src/nautilus-clipboard.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------
|
||||
src/nautilus-clipboard.h | 5 +++--
|
||||
src/nautilus-files-view.c | 112 +++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------
|
||||
src/nautilus-list-view.c | 13 ++++++-------
|
||||
5 files changed, 102 insertions(+), 154 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c
|
||||
index f99ddd9..7de0808 100644
|
||||
--- a/src/nautilus-canvas-view.c
|
||||
+++ b/src/nautilus-canvas-view.c
|
||||
@@ -549,9 +549,9 @@ nautilus_canvas_view_begin_loading (NautilusFilesView *view)
|
||||
}
|
||||
|
||||
static void
|
||||
-on_clipboard_contents_received (GtkClipboard *clipboard,
|
||||
- GtkSelectionData *selection_data,
|
||||
- gpointer user_data)
|
||||
+on_clipboard_contents_received (GtkClipboard *clipboard,
|
||||
+ const gchar *selection_data,
|
||||
+ gpointer user_data)
|
||||
{
|
||||
NautilusCanvasView *canvas_view;
|
||||
|
||||
@@ -590,10 +590,9 @@ static void
|
||||
update_clipboard_status (NautilusCanvasView *view)
|
||||
{
|
||||
g_object_ref (view); /* Need to keep the object alive until we get the reply */
|
||||
- gtk_clipboard_request_contents (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
- nautilus_clipboard_get_atom (),
|
||||
- on_clipboard_contents_received,
|
||||
- view);
|
||||
+ gtk_clipboard_request_text (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
+ on_clipboard_contents_received,
|
||||
+ view);
|
||||
}
|
||||
|
||||
static void
|
||||
diff --git a/src/nautilus-clipboard.c b/src/nautilus-clipboard.c
|
||||
index 267d7a3..752ff13 100644
|
||||
--- a/src/nautilus-clipboard.c
|
||||
+++ b/src/nautilus-clipboard.c
|
||||
@@ -33,30 +33,32 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <string.h>
|
||||
|
||||
-static GdkAtom copied_files_atom;
|
||||
-
|
||||
typedef struct
|
||||
{
|
||||
gboolean cut;
|
||||
GList *files;
|
||||
} ClipboardInfo;
|
||||
|
||||
static GList *
|
||||
-convert_lines_to_str_list (char **lines)
|
||||
+convert_selection_data_to_str_list (const gchar *data)
|
||||
{
|
||||
int i;
|
||||
GList *result;
|
||||
+ size_t number_of_lines;
|
||||
+ gchar **lines;
|
||||
|
||||
- if (lines[0] == NULL)
|
||||
- {
|
||||
- return NULL;
|
||||
- }
|
||||
-
|
||||
+ lines = g_strsplit (data, "\n", 0);
|
||||
result = NULL;
|
||||
- for (i = 0; lines[i] != NULL; i++)
|
||||
+ number_of_lines = g_strv_length (lines);
|
||||
+ /* Also, this skips the last line, since it would be an
|
||||
+ * empty string from the split */
|
||||
+ for (i = 0; i < number_of_lines - 1; i++)
|
||||
{
|
||||
result = g_list_prepend (result, g_strdup (lines[i]));
|
||||
}
|
||||
+
|
||||
+ g_strfreev (lines);
|
||||
+
|
||||
return g_list_reverse (result);
|
||||
}
|
||||
|
||||
@@ -77,7 +79,8 @@ convert_file_list_to_string (ClipboardInfo *info,
|
||||
}
|
||||
else
|
||||
{
|
||||
- uris = g_string_new (info->cut ? "cut" : "copy");
|
||||
+ uris = g_string_new ("x-special/nautilus-clipboard\n");
|
||||
+ g_string_append (uris, info->cut ? "cut\n" : "copy\n");
|
||||
}
|
||||
|
||||
for (i = 0, l = info->files; l != NULL; l = l->next, i++)
|
||||
@@ -100,16 +103,12 @@ convert_file_list_to_string (ClipboardInfo *info,
|
||||
g_string_append (uris, uri);
|
||||
}
|
||||
|
||||
- /* skip newline for last element */
|
||||
- if (i + 1 < g_list_length (info->files))
|
||||
- {
|
||||
- g_string_append_c (uris, '\n');
|
||||
- }
|
||||
+ g_string_append_c (uris, '\n');
|
||||
}
|
||||
else
|
||||
{
|
||||
- g_string_append_c (uris, '\n');
|
||||
g_string_append (uris, uri);
|
||||
+ g_string_append_c (uris, '\n');
|
||||
}
|
||||
|
||||
g_free (uri);
|
||||
@@ -120,43 +119,60 @@ convert_file_list_to_string (ClipboardInfo *info,
|
||||
}
|
||||
|
||||
static GList *
|
||||
-get_item_list_from_selection_data (GtkSelectionData *selection_data)
|
||||
+get_item_list_from_selection_data (const gchar *selection_data)
|
||||
{
|
||||
- GList *items;
|
||||
- char **lines;
|
||||
+ GList *items = NULL;
|
||||
|
||||
- if (gtk_selection_data_get_data_type (selection_data) != copied_files_atom
|
||||
- || gtk_selection_data_get_length (selection_data) <= 0)
|
||||
+ if (selection_data != NULL)
|
||||
{
|
||||
- items = NULL;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- gchar *data;
|
||||
+ gboolean valid_data = TRUE;
|
||||
/* Not sure why it's legal to assume there's an extra byte
|
||||
* past the end of the selection data that it's safe to write
|
||||
* to. But gtk_editable_selection_received does this, so I
|
||||
* think it is OK.
|
||||
*/
|
||||
- data = (gchar *) gtk_selection_data_get_data (selection_data);
|
||||
- data[gtk_selection_data_get_length (selection_data)] = '\0';
|
||||
- lines = g_strsplit (data, "\n", 0);
|
||||
- items = convert_lines_to_str_list (lines);
|
||||
- g_strfreev (lines);
|
||||
+ items = convert_selection_data_to_str_list (selection_data);
|
||||
+ if (items == NULL || g_strcmp0 (items->data, "x-special/nautilus-clipboard") != 0)
|
||||
+ {
|
||||
+ valid_data = FALSE;
|
||||
+ }
|
||||
+ else if (items->next == NULL)
|
||||
+ {
|
||||
+ valid_data = FALSE;
|
||||
+ }
|
||||
+ else if (g_strcmp0 (items->next->data, "cut") != 0 &&
|
||||
+ g_strcmp0 (items->next->data, "copy") != 0)
|
||||
+ {
|
||||
+ valid_data = FALSE;
|
||||
+ }
|
||||
+
|
||||
+ if (!valid_data)
|
||||
+ {
|
||||
+ g_list_free_full (items, g_free);
|
||||
+ items = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
+gboolean
|
||||
+nautilus_clipboard_is_data_valid_from_selection_data (const gchar *selection_data)
|
||||
+{
|
||||
+ return nautilus_clipboard_get_uri_list_from_selection_data (selection_data) != NULL;
|
||||
+}
|
||||
+
|
||||
GList *
|
||||
-nautilus_clipboard_get_uri_list_from_selection_data (GtkSelectionData *selection_data)
|
||||
+nautilus_clipboard_get_uri_list_from_selection_data (const gchar *selection_data)
|
||||
{
|
||||
GList *items;
|
||||
|
||||
items = get_item_list_from_selection_data (selection_data);
|
||||
if (items)
|
||||
{
|
||||
- /* Line 0 is "cut" or "copy", so uris start at line 1. */
|
||||
+ /* Line 0 is x-special/nautilus-clipboard. */
|
||||
+ items = g_list_remove (items, items->data);
|
||||
+ /* Line 1 is "cut" or "copy", so uris start at line 2. */
|
||||
items = g_list_remove (items, items->data);
|
||||
}
|
||||
|
||||
@@ -174,13 +190,12 @@ void
|
||||
nautilus_clipboard_clear_if_colliding_uris (GtkWidget *widget,
|
||||
const GList *item_uris)
|
||||
{
|
||||
- GtkSelectionData *data;
|
||||
+ g_autofree gchar *data = NULL;
|
||||
GList *clipboard_item_uris, *l;
|
||||
gboolean collision;
|
||||
|
||||
collision = FALSE;
|
||||
- data = gtk_clipboard_wait_for_contents (nautilus_clipboard_get (widget),
|
||||
- copied_files_atom);
|
||||
+ data = gtk_clipboard_wait_for_text (nautilus_clipboard_get (widget));
|
||||
if (data == NULL)
|
||||
{
|
||||
return;
|
||||
@@ -210,14 +225,14 @@ nautilus_clipboard_clear_if_colliding_uris (GtkWidget *widget,
|
||||
}
|
||||
|
||||
gboolean
|
||||
-nautilus_clipboard_is_cut_from_selection_data (GtkSelectionData *selection_data)
|
||||
+nautilus_clipboard_is_cut_from_selection_data (const gchar *selection_data)
|
||||
{
|
||||
GList *items;
|
||||
gboolean is_cut_from_selection_data;
|
||||
|
||||
items = get_item_list_from_selection_data (selection_data);
|
||||
is_cut_from_selection_data = items != NULL &&
|
||||
- g_strcmp0 ((gchar *) items->data, "cut") == 0;
|
||||
+ g_strcmp0 ((gchar *) items->next->data, "cut") == 0;
|
||||
|
||||
g_list_free_full (items, g_free);
|
||||
|
||||
@@ -262,17 +277,8 @@ on_get_clipboard (GtkClipboard *clipboard,
|
||||
char *str;
|
||||
gsize len;
|
||||
|
||||
- str = convert_file_list_to_string (clipboard_info, TRUE, &len);
|
||||
- gtk_selection_data_set_text (selection_data, str, len);
|
||||
- g_free (str);
|
||||
- }
|
||||
- else if (target == copied_files_atom)
|
||||
- {
|
||||
- char *str;
|
||||
- gsize len;
|
||||
-
|
||||
str = convert_file_list_to_string (clipboard_info, FALSE, &len);
|
||||
- gtk_selection_data_set (selection_data, copied_files_atom, 8, (guchar *) str, len);
|
||||
+ gtk_selection_data_set_text (selection_data, str, len);
|
||||
g_free (str);
|
||||
}
|
||||
}
|
||||
@@ -303,7 +309,6 @@ nautilus_clipboard_prepare_for_files (GtkClipboard *clipboard,
|
||||
clipboard_info->files = nautilus_file_list_copy (files);
|
||||
|
||||
target_list = gtk_target_list_new (NULL, 0);
|
||||
- gtk_target_list_add (target_list, copied_files_atom, 0, 0);
|
||||
gtk_target_list_add_uri_targets (target_list, 0);
|
||||
gtk_target_list_add_text_targets (target_list, 0);
|
||||
|
||||
@@ -317,13 +322,3 @@ nautilus_clipboard_prepare_for_files (GtkClipboard *clipboard,
|
||||
gtk_target_table_free (targets, n_targets);
|
||||
}
|
||||
|
||||
-GdkAtom
|
||||
-nautilus_clipboard_get_atom (void)
|
||||
-{
|
||||
- if (!copied_files_atom)
|
||||
- {
|
||||
- copied_files_atom = gdk_atom_intern_static_string ("x-special/gnome-copied-files");
|
||||
- }
|
||||
-
|
||||
- return copied_files_atom;
|
||||
-}
|
||||
diff --git a/src/nautilus-clipboard.h b/src/nautilus-clipboard.h
|
||||
index 613e983..3be19c9 100644
|
||||
--- a/src/nautilus-clipboard.h
|
||||
+++ b/src/nautilus-clipboard.h
|
||||
@@ -28,11 +28,12 @@
|
||||
void nautilus_clipboard_clear_if_colliding_uris (GtkWidget *widget,
|
||||
const GList *item_uris);
|
||||
GtkClipboard* nautilus_clipboard_get (GtkWidget *widget);
|
||||
-GList* nautilus_clipboard_get_uri_list_from_selection_data (GtkSelectionData *selection_data);
|
||||
-gboolean nautilus_clipboard_is_cut_from_selection_data (GtkSelectionData *selection_data);
|
||||
+GList* nautilus_clipboard_get_uri_list_from_selection_data (const gchar *selection_data);
|
||||
+gboolean nautilus_clipboard_is_cut_from_selection_data (const gchar *selection_data);
|
||||
void nautilus_clipboard_prepare_for_files (GtkClipboard *clipboard,
|
||||
GList *files,
|
||||
gboolean cut);
|
||||
GdkAtom nautilus_clipboard_get_atom (void);
|
||||
+gboolean nautilus_clipboard_is_data_valid_from_selection_data (const gchar *selection_data);
|
||||
|
||||
#endif /* NAUTILUS_CLIPBOARD_H */
|
||||
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
|
||||
index 8aff33e..a74b691 100644
|
||||
--- a/src/nautilus-files-view.c
|
||||
+++ b/src/nautilus-files-view.c
|
||||
@@ -2551,7 +2551,7 @@ action_open_item_new_window (GSimpleAction *action,
|
||||
|
||||
static void
|
||||
handle_clipboard_data (NautilusFilesView *view,
|
||||
- GtkSelectionData *selection_data,
|
||||
+ const gchar *selection_data,
|
||||
char *destination_uri,
|
||||
GdkDragAction action)
|
||||
{
|
||||
@@ -2576,7 +2576,7 @@ handle_clipboard_data (NautilusFilesView *view,
|
||||
|
||||
static void
|
||||
paste_clipboard_data (NautilusFilesView *view,
|
||||
- GtkSelectionData *selection_data,
|
||||
+ const gchar *selection_data,
|
||||
char *destination_uri)
|
||||
{
|
||||
GdkDragAction action;
|
||||
@@ -2594,9 +2594,9 @@ paste_clipboard_data (NautilusFilesView *view,
|
||||
}
|
||||
|
||||
static void
|
||||
-paste_clipboard_received_callback (GtkClipboard *clipboard,
|
||||
- GtkSelectionData *selection_data,
|
||||
- gpointer data)
|
||||
+paste_clipboard_text_received_callback (GtkClipboard *clipboard,
|
||||
+ const gchar *selection_data,
|
||||
+ gpointer data)
|
||||
{
|
||||
NautilusFilesView *view;
|
||||
NautilusFilesViewPrivate *priv;
|
||||
@@ -2629,16 +2629,15 @@ action_paste_files (GSimpleAction *action,
|
||||
view = NAUTILUS_FILES_VIEW (user_data);
|
||||
|
||||
g_object_ref (view);
|
||||
- gtk_clipboard_request_contents (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
- nautilus_clipboard_get_atom (),
|
||||
- paste_clipboard_received_callback,
|
||||
- view);
|
||||
+ gtk_clipboard_request_text (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
+ paste_clipboard_text_received_callback,
|
||||
+ view);
|
||||
}
|
||||
|
||||
static void
|
||||
-create_links_clipboard_received_callback (GtkClipboard *clipboard,
|
||||
- GtkSelectionData *selection_data,
|
||||
- gpointer data)
|
||||
+create_links_clipboard_received_callback (GtkClipboard *clipboard,
|
||||
+ const gchar *selection_data,
|
||||
+ gpointer data)
|
||||
{
|
||||
NautilusFilesView *view;
|
||||
NautilusFilesViewPrivate *priv;
|
||||
@@ -2671,10 +2670,9 @@ action_create_links (GSimpleAction *action,
|
||||
view = NAUTILUS_FILES_VIEW (user_data);
|
||||
|
||||
g_object_ref (view);
|
||||
- gtk_clipboard_request_contents (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
- nautilus_clipboard_get_atom (),
|
||||
- create_links_clipboard_received_callback,
|
||||
- view);
|
||||
+ gtk_clipboard_request_text (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
+ create_links_clipboard_received_callback,
|
||||
+ view);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -6016,9 +6014,9 @@ typedef struct
|
||||
} PasteIntoData;
|
||||
|
||||
static void
|
||||
-paste_into_clipboard_received_callback (GtkClipboard *clipboard,
|
||||
- GtkSelectionData *selection_data,
|
||||
- gpointer callback_data)
|
||||
+paste_into_clipboard_received_callback (GtkClipboard *clipboard,
|
||||
+ const gchar *selection_data,
|
||||
+ gpointer callback_data)
|
||||
{
|
||||
NautilusFilesViewPrivate *priv;
|
||||
PasteIntoData *data;
|
||||
@@ -6058,10 +6056,9 @@ paste_into (NautilusFilesView *view,
|
||||
data->view = g_object_ref (view);
|
||||
data->target = nautilus_file_ref (target);
|
||||
|
||||
- gtk_clipboard_request_contents (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
- nautilus_clipboard_get_atom (),
|
||||
- paste_into_clipboard_received_callback,
|
||||
- data);
|
||||
+ gtk_clipboard_request_text (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
+ paste_into_clipboard_received_callback,
|
||||
+ data);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -6925,18 +6922,19 @@ can_paste_into_file (NautilusFile *file)
|
||||
}
|
||||
|
||||
static void
|
||||
-on_clipboard_contents_received (GtkClipboard *clipboard,
|
||||
- GtkSelectionData *selection_data,
|
||||
- gpointer user_data)
|
||||
+on_clipboard_contents_received (GtkClipboard *clipboard,
|
||||
+ const gchar *selection_data,
|
||||
+ gpointer user_data)
|
||||
{
|
||||
NautilusFilesViewPrivate *priv;
|
||||
NautilusFilesView *view;
|
||||
gboolean can_link_from_copied_files;
|
||||
gboolean settings_show_create_link;
|
||||
gboolean is_read_only;
|
||||
gboolean selection_contains_recent;
|
||||
gboolean selection_contains_starred;
|
||||
GAction *action;
|
||||
+ gboolean is_data_valid;
|
||||
|
||||
view = NAUTILUS_FILES_VIEW (user_data);
|
||||
priv = nautilus_files_view_get_instance_private (view);
|
||||
@@ -6949,77 +6947,41 @@ on_clipboard_contents_received (GtkClipboard *clipboard,
|
||||
return;
|
||||
}
|
||||
|
||||
+ is_data_valid = nautilus_clipboard_is_data_valid_from_selection_data (selection_data);
|
||||
settings_show_create_link = g_settings_get_boolean (nautilus_preferences,
|
||||
NAUTILUS_PREFERENCES_SHOW_CREATE_LINK);
|
||||
is_read_only = nautilus_files_view_is_read_only (view);
|
||||
selection_contains_recent = showing_recent_directory (view);
|
||||
selection_contains_starred = showing_starred_directory (view);
|
||||
can_link_from_copied_files = !nautilus_clipboard_is_cut_from_selection_data (selection_data) &&
|
||||
!selection_contains_recent && !selection_contains_starred &&
|
||||
- !is_read_only && gtk_selection_data_get_length (selection_data) > 0;
|
||||
+ !is_read_only && selection_data != NULL;
|
||||
|
||||
action = g_action_map_lookup_action (G_ACTION_MAP (priv->view_action_group),
|
||||
"create-link");
|
||||
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
|
||||
can_link_from_copied_files &&
|
||||
settings_show_create_link);
|
||||
|
||||
- g_object_unref (view);
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
-on_clipboard_targets_received (GtkClipboard *clipboard,
|
||||
- GdkAtom *targets,
|
||||
- int n_targets,
|
||||
- gpointer user_data)
|
||||
-{
|
||||
- NautilusFilesViewPrivate *priv;
|
||||
- NautilusFilesView *view;
|
||||
- gboolean is_data_copied;
|
||||
- int i;
|
||||
- GAction *action;
|
||||
-
|
||||
- view = NAUTILUS_FILES_VIEW (user_data);
|
||||
- priv = nautilus_files_view_get_instance_private (view);
|
||||
- is_data_copied = FALSE;
|
||||
-
|
||||
- if (priv->slot == NULL ||
|
||||
- !priv->active)
|
||||
- {
|
||||
- /* We've been destroyed or became inactive since call */
|
||||
- g_object_unref (view);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- if (targets)
|
||||
- {
|
||||
- for (i = 0; i < n_targets; i++)
|
||||
- {
|
||||
- if (targets[i] == nautilus_clipboard_get_atom ())
|
||||
- {
|
||||
- is_data_copied = TRUE;
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
action = g_action_map_lookup_action (G_ACTION_MAP (priv->view_action_group),
|
||||
"paste");
|
||||
/* Take into account if the action was previously disabled for other reasons,
|
||||
* like the directory not being writabble */
|
||||
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
|
||||
- is_data_copied && g_action_get_enabled (action));
|
||||
+ is_data_valid && g_action_get_enabled (action));
|
||||
|
||||
action = g_action_map_lookup_action (G_ACTION_MAP (priv->view_action_group),
|
||||
"paste-into");
|
||||
|
||||
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
|
||||
- is_data_copied && g_action_get_enabled (action));
|
||||
+ is_data_valid && g_action_get_enabled (action));
|
||||
|
||||
action = g_action_map_lookup_action (G_ACTION_MAP (priv->view_action_group),
|
||||
"create-link");
|
||||
|
||||
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
|
||||
- is_data_copied && g_action_get_enabled (action));
|
||||
+ is_data_valid && g_action_get_enabled (action));
|
||||
+
|
||||
|
||||
g_object_unref (view);
|
||||
}
|
||||
@@ -7565,18 +7527,10 @@ real_update_actions_state (NautilusFilesView *view)
|
||||
!selection_contains_starred &&
|
||||
priv->templates_present);
|
||||
|
||||
- /* Actions that are related to the clipboard need request, request the data
|
||||
- * and update them once we have the data */
|
||||
- g_object_ref (view); /* Need to keep the object alive until we get the reply */
|
||||
- gtk_clipboard_request_targets (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
- on_clipboard_targets_received,
|
||||
- view);
|
||||
-
|
||||
g_object_ref (view); /* Need to keep the object alive until we get the reply */
|
||||
- gtk_clipboard_request_contents (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
- nautilus_clipboard_get_atom (),
|
||||
- on_clipboard_contents_received,
|
||||
- view);
|
||||
+ gtk_clipboard_request_text (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
+ on_clipboard_contents_received,
|
||||
+ view);
|
||||
|
||||
action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
|
||||
"select-all");
|
||||
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
|
||||
index d2ba388..4f65080 100644
|
||||
--- a/src/nautilus-list-view.c
|
||||
+++ b/src/nautilus-list-view.c
|
||||
@@ -3628,9 +3628,9 @@ list_view_scroll_to_file (NautilusFilesView *view,
|
||||
}
|
||||
|
||||
static void
|
||||
-on_clipboard_contents_received (GtkClipboard *clipboard,
|
||||
- GtkSelectionData *selection_data,
|
||||
- gpointer user_data)
|
||||
+on_clipboard_contents_received (GtkClipboard *clipboard,
|
||||
+ const gchar *selection_data,
|
||||
+ gpointer user_data)
|
||||
{
|
||||
NautilusListView *view = NAUTILUS_LIST_VIEW (user_data);
|
||||
|
||||
@@ -3665,10 +3665,9 @@ static void
|
||||
update_clipboard_status (NautilusListView *view)
|
||||
{
|
||||
g_object_ref (view); /* Need to keep the object alive until we get the reply */
|
||||
- gtk_clipboard_request_contents (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
- nautilus_clipboard_get_atom (),
|
||||
- on_clipboard_contents_received,
|
||||
- view);
|
||||
+ gtk_clipboard_request_text (nautilus_clipboard_get (GTK_WIDGET (view)),
|
||||
+ on_clipboard_contents_received,
|
||||
+ view);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
libgit2 0.26.0
|
||||
|
78
0013-dbus-manager-Provide-undo-status.patch
Normal file
78
0013-dbus-manager-Provide-undo-status.patch
Normal file
@ -0,0 +1,78 @@
|
||||
From 90229bd32fde57feb4dd37bc018d47c7a29e7e93 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Sat, 18 Aug 2018 20:31:36 +0200
|
||||
Subject: [PATCH] dbus-manager: Provide undo status
|
||||
|
||||
This is interesting for the desktop icons integration, so it can hide
|
||||
the undo/redo menu items appropriately.
|
||||
---
|
||||
data/dbus-interfaces.xml | 1 +
|
||||
src/nautilus-dbus-manager.c | 31 +++++++++++++++++++++++++++++--
|
||||
2 files changed, 30 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
|
||||
index 64176225c..078cf24a2 100644
|
||||
--- a/data/dbus-interfaces.xml
|
||||
+++ b/data/dbus-interfaces.xml
|
||||
@@ -43,5 +43,6 @@
|
||||
</method>
|
||||
<method name='Redo'>
|
||||
</method>
|
||||
+ <property name="UndoStatus" type="i" access="read"/>
|
||||
</interface>
|
||||
</node>
|
||||
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
|
||||
index f11ede0ad..64f004d88 100644
|
||||
--- a/src/nautilus-dbus-manager.c
|
||||
+++ b/src/nautilus-dbus-manager.c
|
||||
@@ -237,6 +237,17 @@ handle_trash_files (NautilusDBusFileOperations *object,
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
|
||||
+
|
||||
+static void
|
||||
+undo_manager_changed (NautilusDBusManager *self)
|
||||
+{
|
||||
+ NautilusFileUndoManagerState undo_state;
|
||||
+
|
||||
+ undo_state = nautilus_file_undo_manager_get_state ();
|
||||
+ nautilus_dbus_file_operations_set_undo_status (self->file_operations,
|
||||
+ undo_state);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
nautilus_dbus_manager_init (NautilusDBusManager *self)
|
||||
{
|
||||
@@ -292,12 +303,28 @@ nautilus_dbus_manager_register (NautilusDBusManager *self,
|
||||
GDBusConnection *connection,
|
||||
GError **error)
|
||||
{
|
||||
- return g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (self->file_operations),
|
||||
- connection, "/org/gnome/Nautilus" PROFILE, error);
|
||||
+ gboolean succes;
|
||||
+
|
||||
+ succes = g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (self->file_operations),
|
||||
+ connection, "/org/gnome/Nautilus" PROFILE, error);
|
||||
+ if (succes)
|
||||
+ {
|
||||
+ g_signal_connect_object (nautilus_file_undo_manager_get (),
|
||||
+ "undo-changed",
|
||||
+ G_CALLBACK (undo_manager_changed),
|
||||
+ self,
|
||||
+ G_CONNECT_SWAPPED);
|
||||
+
|
||||
+ undo_manager_changed (self);
|
||||
+ }
|
||||
+
|
||||
+ return succes;
|
||||
}
|
||||
|
||||
void
|
||||
nautilus_dbus_manager_unregister (NautilusDBusManager *self)
|
||||
{
|
||||
g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (self->file_operations));
|
||||
+
|
||||
+ g_signal_handlers_disconnect_by_data (nautilus_file_undo_manager_get (), self);
|
||||
}
|
||||
--
|
||||
2.17.1
|
@ -0,0 +1,59 @@
|
||||
From f0e34498a2f2e2ec6644a3af47c1b56ac5b6dec3 Mon Sep 17 00:00:00 2001
|
||||
From: Ernestas Kulik <ernestask@gnome.org>
|
||||
Date: Thu, 2 Aug 2018 22:29:03 +0300
|
||||
Subject: [PATCH] clipboard: Prevent crash when selection data is empty
|
||||
|
||||
Somehow, magically, it can happen that the clipboard contains an empty
|
||||
string, which wreaks havoc in convert_selection_data_to_str_list(),
|
||||
since the loop counter goes from 0 to the number of lines in the data
|
||||
string minus one. This commit adds a check for the number of lines and
|
||||
returns early. Additionally, this introduces automatic cleanup for a
|
||||
variable and fixes mismatched types.
|
||||
---
|
||||
src/nautilus-clipboard.c | 20 +++++++++++++-------
|
||||
1 file changed, 13 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-clipboard.c b/src/nautilus-clipboard.c
|
||||
index 752ff131f..2a77cf28f 100644
|
||||
--- a/src/nautilus-clipboard.c
|
||||
+++ b/src/nautilus-clipboard.c
|
||||
@@ -42,23 +42,29 @@ typedef struct
|
||||
static GList *
|
||||
convert_selection_data_to_str_list (const gchar *data)
|
||||
{
|
||||
- int i;
|
||||
+ g_auto (GStrv) lines;
|
||||
+ guint number_of_lines;
|
||||
GList *result;
|
||||
- size_t number_of_lines;
|
||||
- gchar **lines;
|
||||
|
||||
lines = g_strsplit (data, "\n", 0);
|
||||
- result = NULL;
|
||||
number_of_lines = g_strv_length (lines);
|
||||
+ if (number_of_lines == 0)
|
||||
+ {
|
||||
+ /* An empty string will result in g_strsplit() returning an empty
|
||||
+ * array, so, naturally, 0 - 1 = UINT32_MAX and we read all sorts
|
||||
+ * of invalid memory.
|
||||
+ */
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ result = NULL;
|
||||
+
|
||||
/* Also, this skips the last line, since it would be an
|
||||
* empty string from the split */
|
||||
- for (i = 0; i < number_of_lines - 1; i++)
|
||||
+ for (guint i = 0; i < number_of_lines - 1; i++)
|
||||
{
|
||||
result = g_list_prepend (result, g_strdup (lines[i]));
|
||||
}
|
||||
|
||||
- g_strfreev (lines);
|
||||
-
|
||||
return g_list_reverse (result);
|
||||
}
|
||||
|
||||
--
|
||||
2.17.2
|
||||
|
90
add-desktop-icons-rename.patch
Normal file
90
add-desktop-icons-rename.patch
Normal file
@ -0,0 +1,90 @@
|
||||
From bac4bd595c518983571b0fb41fcf5586f27544eb Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Mon, 19 Nov 2018 08:55:22 +0000
|
||||
Subject: [PATCH] dbus: Implement rename file
|
||||
|
||||
So desktop icons extensions can use it.
|
||||
|
||||
|
||||
(cherry picked from commit 42c5ce657e2b24ddf19932e9e3284a045d60ff51)
|
||||
---
|
||||
data/dbus-interfaces.xml | 4 ++++
|
||||
src/nautilus-dbus-manager.c | 33 +++++++++++++++++++++++++++++++++
|
||||
2 files changed, 37 insertions(+)
|
||||
|
||||
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
|
||||
index 298871bc4..1827f92ab 100644
|
||||
--- a/data/dbus-interfaces.xml
|
||||
+++ b/data/dbus-interfaces.xml
|
||||
@@ -39,6 +39,10 @@
|
||||
<method name='CreateFolder'>
|
||||
<arg type='s' name='URI' direction='in'/>
|
||||
</method>
|
||||
+ <method name='RenameFile'>
|
||||
+ <arg type='s' name='URI' direction='in'/>
|
||||
+ <arg type='s' name='NewName' direction='in'/>
|
||||
+ </method>
|
||||
<method name='Undo'>
|
||||
</method>
|
||||
<method name='Redo'>
|
||||
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
|
||||
index 3257c4bd4..43f27e10a 100644
|
||||
--- a/src/nautilus-dbus-manager.c
|
||||
+++ b/src/nautilus-dbus-manager.c
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
#include "nautilus-file-operations.h"
|
||||
#include "nautilus-file-undo-manager.h"
|
||||
+#include "nautilus-file.h"
|
||||
|
||||
#define DEBUG_FLAG NAUTILUS_DEBUG_DBUS
|
||||
#include "nautilus-debug.h"
|
||||
@@ -230,6 +231,34 @@ handle_trash_files (NautilusDBusFileOperations *object,
|
||||
return TRUE; /* invocation was handled */
|
||||
}
|
||||
|
||||
+static void
|
||||
+rename_file_on_finished (NautilusFile *file,
|
||||
+ GFile *result_location,
|
||||
+ GError *error,
|
||||
+ gpointer callback_data)
|
||||
+{
|
||||
+ g_application_release (g_application_get_default ());
|
||||
+}
|
||||
+
|
||||
+static gboolean
|
||||
+handle_rename_file (NautilusDBusFileOperations *object,
|
||||
+ GDBusMethodInvocation *invocation,
|
||||
+ const gchar *uri,
|
||||
+ const gchar *new_name)
|
||||
+{
|
||||
+ NautilusFile *file = NULL;
|
||||
+
|
||||
+ file = nautilus_file_get_by_uri (uri);
|
||||
+
|
||||
+ g_application_hold (g_application_get_default ());
|
||||
+ nautilus_file_rename (file, new_name,
|
||||
+ rename_file_on_finished, NULL);
|
||||
+
|
||||
+ nautilus_dbus_file_operations_complete_rename_file (object, invocation);
|
||||
+
|
||||
+ return TRUE; /* invocation was handled */
|
||||
+}
|
||||
+
|
||||
|
||||
static void
|
||||
undo_manager_changed (NautilusDBusManager *self)
|
||||
@@ -266,6 +295,10 @@ nautilus_dbus_manager_init (NautilusDBusManager *self)
|
||||
"handle-create-folder",
|
||||
G_CALLBACK (handle_create_folder),
|
||||
self);
|
||||
+ g_signal_connect (self->file_operations,
|
||||
+ "handle-rename-file",
|
||||
+ G_CALLBACK (handle_rename_file),
|
||||
+ self);
|
||||
g_signal_connect (self->file_operations,
|
||||
"handle-undo",
|
||||
G_CALLBACK (handle_undo),
|
||||
--
|
||||
2.18.1
|
||||
|
19
appdata-Use-Files-instead-of-Nautilus.patch
Normal file
19
appdata-Use-Files-instead-of-Nautilus.patch
Normal file
@ -0,0 +1,19 @@
|
||||
diff --git a/data/org.gnome.Nautilus.appdata.xml.in.in b/data/org.gnome.Nautilus.appdata.xml.in.in
|
||||
index 1e3986323..35e54cb14 100644
|
||||
--- a/data/org.gnome.Nautilus.appdata.xml.in.in
|
||||
+++ b/data/org.gnome.Nautilus.appdata.xml.in.in
|
||||
@@ -2,11 +2,11 @@
|
||||
<id>@appid@.desktop</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-2.0+</project_license>
|
||||
- <name>Nautilus</name>
|
||||
+ <name>Files</name>
|
||||
<summary>Access and organize files</summary>
|
||||
<description>
|
||||
<p>
|
||||
- Nautilus, also known as Files, is the default file manager of the GNOME desktop.
|
||||
+ Files, also known as Nautilus, is the default file manager of the GNOME desktop.
|
||||
It provides a simple and integrated way of managing your files and browsing your file system.
|
||||
</p>
|
||||
<p>
|
||||
|
44
data-Fix-caption-capitalisation-in-appdata-file.patch
Normal file
44
data-Fix-caption-capitalisation-in-appdata-file.patch
Normal file
@ -0,0 +1,44 @@
|
||||
From 51b543cd5106a8b929b336bc6779eddd4d2ac780 Mon Sep 17 00:00:00 2001
|
||||
From: Philip Withnall <withnall@endlessm.com>
|
||||
Date: Thu, 11 Apr 2019 12:36:21 +0100
|
||||
Subject: [PATCH] data: Fix caption capitalisation in appdata file
|
||||
|
||||
Make the capitalisation of the image captions match the translatable
|
||||
titles of the dialogues in the images, so that translations can be
|
||||
reused.
|
||||
|
||||
Signed-off-by: Philip Withnall <withnall@endlessm.com>
|
||||
---
|
||||
data/org.gnome.Nautilus.appdata.xml.in.in | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/data/org.gnome.Nautilus.appdata.xml.in.in b/data/org.gnome.Nautilus.appdata.xml.in.in
|
||||
index cb20fa05f..cfc27e533 100644
|
||||
--- a/data/org.gnome.Nautilus.appdata.xml.in.in
|
||||
+++ b/data/org.gnome.Nautilus.appdata.xml.in.in
|
||||
@@ -28,11 +28,11 @@
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://static.gnome.org/appdata/nautilus/nautilus-201901141.png</image>
|
||||
- <caption>Tile view</caption>
|
||||
+ <caption>Tile View</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://static.gnome.org/appdata/nautilus/nautilus-201901142.png</image>
|
||||
- <caption>List view</caption>
|
||||
+ <caption>List View</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://static.gnome.org/appdata/nautilus/nautilus-201901143.png</image>
|
||||
@@ -40,7 +40,7 @@
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://static.gnome.org/appdata/nautilus/nautilus-201901144.png</image>
|
||||
- <caption>Other locations</caption>
|
||||
+ <caption>Other Locations</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<categories>
|
||||
--
|
||||
2.21.0
|
||||
|
61
docs-Add-nautilus-autorun-software-man-page.patch
Normal file
61
docs-Add-nautilus-autorun-software-man-page.patch
Normal file
@ -0,0 +1,61 @@
|
||||
From 6dd492663cbd3652ebc03d06898f74bacbf87683 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Holy <oholy@redhat.com>
|
||||
Date: Wed, 3 Jul 2019 11:43:31 +0200
|
||||
Subject: [PATCH] docs: Add nautilus-autorun-software man page
|
||||
|
||||
nautilus-autorun-software is the default "x-content/unix-software"
|
||||
handler for GNOME desktop. So it is not just internal tool and thus
|
||||
it should have a man page. Let's add a simple man page for it.
|
||||
|
||||
It resolves the following downstream bug:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1725766
|
||||
---
|
||||
docs/meson.build | 1 +
|
||||
docs/nautilus-autorun-software.1 | 26 ++++++++++++++++++++++++++
|
||||
2 files changed, 27 insertions(+)
|
||||
create mode 100644 docs/nautilus-autorun-software.1
|
||||
|
||||
diff --git a/docs/meson.build b/docs/meson.build
|
||||
index b039cb631..a54574f3c 100644
|
||||
--- a/docs/meson.build
|
||||
+++ b/docs/meson.build
|
||||
@@ -1,3 +1,4 @@
|
||||
install_man('nautilus.1')
|
||||
+install_man('nautilus-autorun-software.1')
|
||||
|
||||
subdir('reference')
|
||||
diff --git a/docs/nautilus-autorun-software.1 b/docs/nautilus-autorun-software.1
|
||||
new file mode 100644
|
||||
index 000000000..9ecbd4adb
|
||||
--- /dev/null
|
||||
+++ b/docs/nautilus-autorun-software.1
|
||||
@@ -0,0 +1,26 @@
|
||||
+.TH nautilus-autorun-software 1 "3 July 2019"
|
||||
+
|
||||
+.SH NAME
|
||||
+Run Software \- helper tool
|
||||
+
|
||||
+.SH SYNOPSIS
|
||||
+.B nautilus-autorun-software
|
||||
+.RI "" "mount-uri"
|
||||
+.br
|
||||
+
|
||||
+.SH DESCRIPTION
|
||||
+.B nautilus-autorun-software
|
||||
+is a helper tool for the GNOME desktop to start software from media with
|
||||
+Autostart files.
|
||||
+.br
|
||||
+
|
||||
+It is the default "x-content/unix-software" handler for the GNOME desktop.
|
||||
+.br
|
||||
+
|
||||
+.SH SEE ALSO
|
||||
+Autostart files are described at
|
||||
+https://specifications.freedesktop.org/autostart-spec/autostart-spec-latest.html
|
||||
+
|
||||
+.SH BUGS
|
||||
+Bug reports can be found and filed at
|
||||
+https://gitlab.gnome.org/GNOME/nautilus/issues
|
||||
--
|
||||
2.21.0
|
||||
|
35
file-operations-Honor-umask-when-creating-new-files.patch
Normal file
35
file-operations-Honor-umask-when-creating-new-files.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From ee035fe0b4257d335687c038bf8b41a64d452d7f Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Holy <oholy@redhat.com>
|
||||
Date: Mon, 18 Nov 2019 11:34:10 +0100
|
||||
Subject: [PATCH] file-operations: Honor umask when creating new files
|
||||
|
||||
File creation mask should be honored when creating new files from
|
||||
templates as it is when creating new folders, or dragging raw data. But
|
||||
it is not because G_FILE_COPY_NONE flag is specified when creating new
|
||||
files from templates. Let's use G_FILE_COPY_TARGET_DEFAULT_PERMS flag
|
||||
to ensure that file creation mask is honored in this case as well.
|
||||
|
||||
Just note that this behavior is not wanted when copying in general
|
||||
(although it is also honored by "cp" cmd in this case) as it might have
|
||||
some unexpected consequences as discussed on:
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=167102
|
||||
---
|
||||
src/nautilus-file-operations.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
|
||||
index acf65f3cf..a90706e2e 100644
|
||||
--- a/src/nautilus-file-operations.c
|
||||
+++ b/src/nautilus-file-operations.c
|
||||
@@ -7361,7 +7361,7 @@ retry:
|
||||
{
|
||||
res = g_file_copy (job->src,
|
||||
dest,
|
||||
- G_FILE_COPY_NONE,
|
||||
+ G_FILE_COPY_TARGET_DEFAULT_PERMS,
|
||||
common->cancellable,
|
||||
NULL, NULL,
|
||||
&error);
|
||||
--
|
||||
2.26.0
|
||||
|
36
files-view-Clear-selection-if-any-files-don-t-match-.patch
Normal file
36
files-view-Clear-selection-if-any-files-don-t-match-.patch
Normal file
@ -0,0 +1,36 @@
|
||||
From 4d7a1a7413cc7e76e99e11def90a6503cc142efb Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Holy <oholy@redhat.com>
|
||||
Date: Wed, 26 Feb 2020 12:56:39 +0100
|
||||
Subject: [PATCH] files-view: Clear selection if any files don't match the
|
||||
pattern
|
||||
|
||||
The Select items matching (Ctrl + S) feature allows to select files
|
||||
which match the pattern. However, it is confusing that current selection
|
||||
is not cleared when any files don't match the pattern.
|
||||
---
|
||||
src/nautilus-files-view.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
|
||||
index 5573701cc..f3d507fff 100644
|
||||
--- a/src/nautilus-files-view.c
|
||||
+++ b/src/nautilus-files-view.c
|
||||
@@ -1716,12 +1716,12 @@ pattern_select_response_cb (GtkWidget *dialog,
|
||||
selection = nautilus_directory_match_pattern (directory,
|
||||
gtk_entry_get_text (GTK_ENTRY (entry)));
|
||||
|
||||
+ nautilus_files_view_call_set_selection (view, selection);
|
||||
+ nautilus_files_view_reveal_selection (view);
|
||||
+
|
||||
if (selection)
|
||||
{
|
||||
- nautilus_files_view_call_set_selection (view, selection);
|
||||
nautilus_file_list_free (selection);
|
||||
-
|
||||
- nautilus_files_view_reveal_selection (view);
|
||||
}
|
||||
/* fall through */
|
||||
}
|
||||
--
|
||||
2.26.0
|
||||
|
22
fix-criticals-when-connecting-to-remote-locations.patch
Normal file
22
fix-criticals-when-connecting-to-remote-locations.patch
Normal file
@ -0,0 +1,22 @@
|
||||
diff --git a/src/gtk/nautilusgtkplacesview.c b/src/gtk/nautilusgtkplacesview.c
|
||||
index de0610e52..b72085ba9 100644
|
||||
--- a/src/gtk/nautilusgtkplacesview.c
|
||||
+++ b/src/gtk/nautilusgtkplacesview.c
|
||||
@@ -401,6 +401,9 @@ nautilus_gtk_places_view_destroy (GtkWidget *widget)
|
||||
if (priv->network_monitor)
|
||||
g_signal_handlers_disconnect_by_func (priv->network_monitor, update_places, widget);
|
||||
|
||||
+ if (priv->server_list_monitor)
|
||||
+ g_signal_handlers_disconnect_by_func (priv->server_list_monitor, server_file_changed_cb, widget);
|
||||
+
|
||||
g_cancellable_cancel (priv->cancellable);
|
||||
g_cancellable_cancel (priv->networks_fetching_cancellable);
|
||||
|
||||
@@ -1405,6 +1407,7 @@ pulse_entry_cb (gpointer user_data)
|
||||
{
|
||||
gtk_entry_set_progress_pulse_step (GTK_ENTRY (priv->address_entry), 0.0);
|
||||
gtk_entry_set_progress_fraction (GTK_ENTRY (priv->address_entry), 0.0);
|
||||
+ priv->entry_pulse_timeout_id = 0;
|
||||
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
29
man-remove-geometry-option.patch
Normal file
29
man-remove-geometry-option.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From 4190844d91f9d4f1bb2997d7769caa57dd5f9a4c Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano1618@gmail.com>
|
||||
Date: Fri, 7 Sep 2018 08:05:18 +0000
|
||||
Subject: [PATCH] man: Remove geometry option
|
||||
|
||||
We removed that some time ago.
|
||||
---
|
||||
docs/nautilus.1 | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/docs/nautilus.1 b/docs/nautilus.1
|
||||
index 70304a1d2..a868c72cb 100644
|
||||
--- a/docs/nautilus.1
|
||||
+++ b/docs/nautilus.1
|
||||
@@ -37,11 +37,6 @@ Perform a quick set of self-check tests.
|
||||
.B \-\-version
|
||||
Show the version of the program.
|
||||
|
||||
-.TP
|
||||
-.BR \-g ", " \-\-geometry=\fIGEOMETRY\fR
|
||||
-Create the initial window with the given geometry. \fBDeprecated\fR - the geometry
|
||||
-is saved and loaded using GSettings.
|
||||
-
|
||||
.TP
|
||||
.BR \-w ", " \-\-new-window
|
||||
Always open a new window for browsing specified URIs.
|
||||
--
|
||||
2.21.0
|
||||
|
33
nautilus-file.c-Fix-open-writable-file-in-recent-tab.patch
Normal file
33
nautilus-file.c-Fix-open-writable-file-in-recent-tab.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From 49718175b75c8ff89a219954f0abd6067e4a39f6 Mon Sep 17 00:00:00 2001
|
||||
From: Wong Heung Sang <hswongac@gmail.com>
|
||||
Date: Mon, 7 May 2018 00:10:15 +0800
|
||||
Subject: [PATCH] nautilus-file.c: Fix open writable file in recent tab
|
||||
|
||||
File opened in recent tab now is read-only
|
||||
when it is writable.
|
||||
|
||||
Replace nautilus_file_info_get_uri ()
|
||||
with nautilus_file_info_get_activation_uri ()
|
||||
fix the problem.
|
||||
|
||||
https://gitlab.gnome.org/GNOME/nautilus/issues/378
|
||||
---
|
||||
src/nautilus-file.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/nautilus-file.c b/src/nautilus-file.c
|
||||
index 0ec5e3848..d3ba8c841 100644
|
||||
--- a/src/nautilus-file.c
|
||||
+++ b/src/nautilus-file.c
|
||||
@@ -4482,7 +4482,7 @@ nautilus_file_get_activation_uri (NautilusFile *file)
|
||||
{
|
||||
g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
|
||||
|
||||
- return nautilus_file_info_get_uri (NAUTILUS_FILE_INFO (file));
|
||||
+ return nautilus_file_info_get_activation_uri (NAUTILUS_FILE_INFO (file));
|
||||
}
|
||||
|
||||
GFile *
|
||||
--
|
||||
2.29.2
|
||||
|
40
nautilus-mime-actions.c-No-Application-Installed-dia.patch
Normal file
40
nautilus-mime-actions.c-No-Application-Installed-dia.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From 3c78251bc3bda455423807cb7fd5e25e7f8afd7e Mon Sep 17 00:00:00 2001
|
||||
From: Timothy OBrien <obrien.timothy.a@gmail.com>
|
||||
Date: Sun, 27 Jan 2019 12:45:28 +1100
|
||||
Subject: [PATCH] nautilus-mime-actions.c: No Application Installed dialog not
|
||||
closed on GTK_RESPONSE_YES
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The "There is no application installed for “foo” files. Do you want to search for an application to open this file?" dialog that appears when there is no application installed to open the specific file type is not closed after clicking Yes. Instead, it reopens again.
|
||||
|
||||
This patch removes code that was causing the file to be activated after the user clicked Yes; relaunching the dialog.
|
||||
|
||||
Resolves #842
|
||||
---
|
||||
src/nautilus-mime-actions.c | 8 --------
|
||||
1 file changed, 8 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-mime-actions.c b/src/nautilus-mime-actions.c
|
||||
index 6f0ad9db5..5d1d5234e 100644
|
||||
--- a/src/nautilus-mime-actions.c
|
||||
+++ b/src/nautilus-mime-actions.c
|
||||
@@ -1191,14 +1191,6 @@ search_for_application_dbus_call_notify_cb (GDBusProxy *proxy,
|
||||
|
||||
g_variant_unref (variant);
|
||||
|
||||
- /* activate the file again */
|
||||
- nautilus_mime_activate_files (parameters_install->parent_window,
|
||||
- parameters_install->slot,
|
||||
- parameters_install->files,
|
||||
- parameters_install->activation_directory,
|
||||
- parameters_install->flags,
|
||||
- parameters_install->user_confirmation);
|
||||
-
|
||||
activate_parameters_install_free (parameters_install);
|
||||
}
|
||||
|
||||
--
|
||||
2.26.0
|
||||
|
2090
nautilus.spec
Normal file
2090
nautilus.spec
Normal file
File diff suppressed because it is too large
Load Diff
54
org.gnome.Nautilus.appdata.xml.in.in-No-screenshots-.patch
Normal file
54
org.gnome.Nautilus.appdata.xml.in.in-No-screenshots-.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From 2eed21b2dd3ec0cdd701f9c18e1e2582c69bdad8 Mon Sep 17 00:00:00 2001
|
||||
From: Timothy OBrien <obrien.timothy.a@gmail.com>
|
||||
Date: Mon, 14 Jan 2019 02:17:42 +1100
|
||||
Subject: [PATCH] org.gnome.Nautilus.appdata.xml.in.in: No screenshots in
|
||||
appdata
|
||||
|
||||
No screenshots were supplied by the appdata xml meaning that software install tools would not show them to the user.
|
||||
|
||||
This commit proposes a set of screenshots hosted via the static-web project: https://gitlab.gnome.org/Infrastructure/static-web
|
||||
|
||||
See static-web merge request https://gitlab.gnome.org/Infrastructure/static-web/merge_requests/2 for proposed screenshots.
|
||||
|
||||
Fixes #556
|
||||
---
|
||||
data/org.gnome.Nautilus.appdata.xml.in.in | 19 +++++++++++++++++++
|
||||
1 file changed, 19 insertions(+)
|
||||
|
||||
diff --git a/data/org.gnome.Nautilus.appdata.xml.in.in b/data/org.gnome.Nautilus.appdata.xml.in.in
|
||||
index 30648b3e6..cb20fa05f 100644
|
||||
--- a/data/org.gnome.Nautilus.appdata.xml.in.in
|
||||
+++ b/data/org.gnome.Nautilus.appdata.xml.in.in
|
||||
@@ -25,6 +25,24 @@
|
||||
<kudo>Notifications</kudo>
|
||||
<kudo>SearchProvider</kudo>
|
||||
</kudos>
|
||||
+ <screenshots>
|
||||
+ <screenshot type="default">
|
||||
+ <image>https://static.gnome.org/appdata/nautilus/nautilus-201901141.png</image>
|
||||
+ <caption>Tile view</caption>
|
||||
+ </screenshot>
|
||||
+ <screenshot>
|
||||
+ <image>https://static.gnome.org/appdata/nautilus/nautilus-201901142.png</image>
|
||||
+ <caption>List view</caption>
|
||||
+ </screenshot>
|
||||
+ <screenshot>
|
||||
+ <image>https://static.gnome.org/appdata/nautilus/nautilus-201901143.png</image>
|
||||
+ <caption>Search</caption>
|
||||
+ </screenshot>
|
||||
+ <screenshot>
|
||||
+ <image>https://static.gnome.org/appdata/nautilus/nautilus-201901144.png</image>
|
||||
+ <caption>Other locations</caption>
|
||||
+ </screenshot>
|
||||
+ </screenshots>
|
||||
<categories>
|
||||
<category>System</category>
|
||||
</categories>
|
||||
@@ -35,3 +53,4 @@
|
||||
<url type="help">https://wiki.gnome.org/action/show/Apps/Nautilus</url>
|
||||
<translation type="gettext">nautilus</translation>
|
||||
</component>
|
||||
+
|
||||
--
|
||||
2.21.0
|
||||
|
62
properties-window-Fix-crashes-when-cancelled.patch
Normal file
62
properties-window-Fix-crashes-when-cancelled.patch
Normal file
@ -0,0 +1,62 @@
|
||||
From a20229f185b494a107634c4b99b2be1ce962a277 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Holy <oholy@redhat.com>
|
||||
Date: Thu, 26 Sep 2019 11:06:45 +0200
|
||||
Subject: [PATCH] properties-window: Fix crashes when cancelled
|
||||
|
||||
Nautilus crashes on the "timed_wait_free: assertion failed:
|
||||
(g_hash_table_lookup (timed_wait_hash_table, wait) != NULL)" assertion
|
||||
when the creating of the properties window is cancelled. This is because
|
||||
the timed wait has been already removed. Let's don't remove the wait
|
||||
when cancelled in order to prevent the crashes.
|
||||
---
|
||||
src/nautilus-properties-window.c | 14 ++++++++++++--
|
||||
1 file changed, 12 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
|
||||
index 969e3ffea..0112aeb3c 100644
|
||||
--- a/src/nautilus-properties-window.c
|
||||
+++ b/src/nautilus-properties-window.c
|
||||
@@ -148,6 +148,7 @@ typedef struct
|
||||
NautilusPropertiesWindowCallback callback;
|
||||
gpointer callback_data;
|
||||
NautilusPropertiesWindow *window;
|
||||
+ gboolean cancelled;
|
||||
} StartupData;
|
||||
|
||||
/* drag and drop definitions */
|
||||
@@ -5229,6 +5230,8 @@ get_existing_window (GList *file_list)
|
||||
static void
|
||||
properties_window_finish (StartupData *data)
|
||||
{
|
||||
+ gboolean cancel_timed_wait;
|
||||
+
|
||||
if (data->parent_widget != NULL)
|
||||
{
|
||||
g_signal_handlers_disconnect_by_data (data->parent_widget,
|
||||
@@ -5240,14 +5243,21 @@ properties_window_finish (StartupData *data)
|
||||
data);
|
||||
}
|
||||
|
||||
- remove_pending (data, TRUE, (data->window == NULL), FALSE);
|
||||
+ cancel_timed_wait = (data->window == NULL && !data->cancelled);
|
||||
+ remove_pending (data, TRUE, cancel_timed_wait, FALSE);
|
||||
+
|
||||
startup_data_free (data);
|
||||
}
|
||||
|
||||
static void
|
||||
cancel_create_properties_window_callback (gpointer callback_data)
|
||||
{
|
||||
- properties_window_finish ((StartupData *) callback_data);
|
||||
+ StartupData *data;
|
||||
+
|
||||
+ data = callback_data;
|
||||
+ data->cancelled = TRUE;
|
||||
+
|
||||
+ properties_window_finish (data);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
2.23.0
|
||||
|
33
properties-window-Fix-crashes-when-opened-multiple-t.patch
Normal file
33
properties-window-Fix-crashes-when-opened-multiple-t.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From c4b567936ebbba8479f6641c89b3980f7963b765 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Holy <oholy@redhat.com>
|
||||
Date: Thu, 26 Sep 2019 11:07:35 +0200
|
||||
Subject: [PATCH] properties-window: Fix crashes when opened multiple times
|
||||
|
||||
Nautilus crashes with segmentation fault when closing the properties dialog
|
||||
after it has been opened mutliple times for the same file. This can't be
|
||||
reproduced over Nautilus as it uses modal dialogs, however, it can be simply
|
||||
reproduced over the Desktop Icons extension. Let's check the pending_key
|
||||
variable before used to be sure it is not NULL to fix this crashes.
|
||||
---
|
||||
src/nautilus-properties-window.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
|
||||
index 0112aeb3c..f6b2f21a6 100644
|
||||
--- a/src/nautilus-properties-window.c
|
||||
+++ b/src/nautilus-properties-window.c
|
||||
@@ -5297,7 +5297,10 @@ remove_pending (StartupData *startup_data,
|
||||
eel_timed_wait_stop
|
||||
(cancel_create_properties_window_callback, startup_data);
|
||||
}
|
||||
- g_hash_table_remove (pending_lists, startup_data->pending_key);
|
||||
+ if (startup_data->pending_key != NULL)
|
||||
+ {
|
||||
+ g_hash_table_remove (pending_lists, startup_data->pending_key);
|
||||
+ }
|
||||
}
|
||||
|
||||
static gboolean
|
||||
--
|
||||
2.23.0
|
||||
|
32
properties-window-Fix-criticals-when-closing.patch
Normal file
32
properties-window-Fix-criticals-when-closing.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 97ec09e79d0a92f57ef6bb6b7e042921f5c3c3c8 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Holy <oholy@redhat.com>
|
||||
Date: Tue, 24 Sep 2019 17:06:15 +0200
|
||||
Subject: [PATCH] properties-window: Fix criticals when closing
|
||||
|
||||
The "eel_timed_wait_stop: assertion 'wait != NULL' failed" critical
|
||||
is printed when closing the properties window since commit c8c2fab2.
|
||||
This is because the timed wait has been already removed. Let's remove
|
||||
the wait when closing only if it has not been yet removed in order to
|
||||
prevent this criticals.
|
||||
|
||||
Fixes: https://gitlab.gnome.org/GNOME/nautilus/issues/1075
|
||||
---
|
||||
src/nautilus-properties-window.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
|
||||
index 9d9bd1c54..969e3ffea 100644
|
||||
--- a/src/nautilus-properties-window.c
|
||||
+++ b/src/nautilus-properties-window.c
|
||||
@@ -5240,7 +5240,7 @@ properties_window_finish (StartupData *data)
|
||||
data);
|
||||
}
|
||||
|
||||
- remove_pending (data, TRUE, TRUE, FALSE);
|
||||
+ remove_pending (data, TRUE, (data->window == NULL), FALSE);
|
||||
startup_data_free (data);
|
||||
}
|
||||
|
||||
--
|
||||
2.23.0
|
||||
|
46
properties-window-Fix-endless-content-size-calculati.patch
Normal file
46
properties-window-Fix-endless-content-size-calculati.patch
Normal file
@ -0,0 +1,46 @@
|
||||
From 13ecf5f9c2d219866550757cb660b569299ac285 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Holy <oholy@redhat.com>
|
||||
Date: Mon, 2 Mar 2020 14:53:36 +0100
|
||||
Subject: [PATCH] properties-window: Fix endless content size calculations
|
||||
|
||||
The total number of items and their size are shown in Properties dialog.
|
||||
|
||||
However, the deep count calculations are currently restarted with each
|
||||
"changed" event of `NautilusFile` object(s). This is not usually a problem
|
||||
if only one file is selected, but it is a pretty big issue when more
|
||||
files are selected. It is common that the calculation never ends. This
|
||||
is because the "changed" events are emitted in many irrelevant cases
|
||||
(e.g. free space change) and it totally doesn't make sense to restart
|
||||
the calculation in most of the cases. The initial idea was to react
|
||||
on ongoing file operations, however, the calculation currently doesn't
|
||||
react on file changes deeper in the tree anyway, or on changes, which
|
||||
happened after the calculation is done. Thus the current result can be
|
||||
outdated anyway.
|
||||
|
||||
Let's ignore `NautilusFile` changes at all when calculating the content
|
||||
size as it is pretty impossible to implement this properly to dynamically
|
||||
react on all size changes in the tree.
|
||||
|
||||
Fixes: https://gitlab.gnome.org/GNOME/nautilus/issues/363
|
||||
---
|
||||
src/nautilus-properties-window.c | 4 ----
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
|
||||
index 9250adbe3..52a2b3fce 100644
|
||||
--- a/src/nautilus-properties-window.c
|
||||
+++ b/src/nautilus-properties-window.c
|
||||
@@ -1137,10 +1137,6 @@ properties_window_update (NautilusPropertiesWindow *window,
|
||||
{
|
||||
dirty_target = TRUE;
|
||||
}
|
||||
- if (changed_file != NULL)
|
||||
- {
|
||||
- start_deep_count_for_file (window, changed_file);
|
||||
- }
|
||||
}
|
||||
|
||||
if (dirty_original)
|
||||
--
|
||||
2.26.0
|
||||
|
900
remove-nfs-support-strings.patch
Normal file
900
remove-nfs-support-strings.patch
Normal file
@ -0,0 +1,900 @@
|
||||
From 93ecc7c079a438bb2baf34500fa77806a545910a Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@redhat.com>
|
||||
Date: Tue, 23 Apr 2019 11:35:45 +0200
|
||||
Subject: [PATCH] Remove nfs support strings
|
||||
|
||||
---
|
||||
src/gtk/nautilusgtkplacesview.ui | 701 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
1 file changed, 388 insertions(+), 313 deletions(-)
|
||||
|
||||
diff --git a/src/gtk/nautilusgtkplacesview.ui b/src/gtk/nautilusgtkplacesview.ui
|
||||
index c366fde..601fce2 100644
|
||||
--- a/src/gtk/nautilusgtkplacesview.ui
|
||||
+++ b/src/gtk/nautilusgtkplacesview.ui
|
||||
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<!-- Generated with glade 3.22.1 -->
|
||||
<interface domain="gtk30">
|
||||
<requires lib="gtk+" version="3.16"/>
|
||||
<object class="GtkListStore" id="completion_store">
|
||||
@@ -11,265 +12,52 @@
|
||||
</object>
|
||||
<object class="GtkEntryCompletion" id="address_entry_completion">
|
||||
<property name="model">completion_store</property>
|
||||
- <property name="text-column">1</property>
|
||||
- <property name="inline-completion">1</property>
|
||||
- <property name="popup-completion">0</property>
|
||||
- </object>
|
||||
- <object class="GtkPopover" id="server_adresses_popover">
|
||||
- <property name="relative-to">address_entry</property>
|
||||
- <child>
|
||||
- <object class="GtkBox">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="border-width">18</property>
|
||||
- <property name="orientation">vertical</property>
|
||||
- <property name="spacing">6</property>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="hexpand">1</property>
|
||||
- <property name="label" translatable="yes">Server Addresses</property>
|
||||
- <attributes>
|
||||
- <attribute name="weight" value="bold"/>
|
||||
- </attributes>
|
||||
- <style>
|
||||
- <class name="dim-label"/>
|
||||
- </style>
|
||||
- </object>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="hexpand">1</property>
|
||||
- <property name="label" translatable="yes">Server addresses are made up of a protocol prefix and an address. Examples:</property>
|
||||
- <property name="wrap">1</property>
|
||||
- <property name="width-chars">40</property>
|
||||
- <property name="max-width-chars">40</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="position">1</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="hexpand">1</property>
|
||||
- <property name="label">smb://gnome.org, ssh://192.168.0.1, ftp://[2001:db8::1]</property>
|
||||
- <property name="wrap">1</property>
|
||||
- <property name="width-chars">40</property>
|
||||
- <property name="max-width-chars">40</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="position">2</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkGrid">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="margin-top">12</property>
|
||||
- <property name="hexpand">1</property>
|
||||
- <property name="row-spacing">6</property>
|
||||
- <property name="column-spacing">12</property>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="hexpand">1</property>
|
||||
- <property name="label" translatable="yes">Available Protocols</property>
|
||||
- <property name="xalign">0</property>
|
||||
- <attributes>
|
||||
- <attribute name="weight" value="bold"/>
|
||||
- </attributes>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">0</property>
|
||||
- <property name="top-attach">0</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes">AppleTalk</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">0</property>
|
||||
- <property name="top-attach">1</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes">File Transfer Protocol</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">0</property>
|
||||
- <property name="top-attach">2</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes">Network File System</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">0</property>
|
||||
- <property name="top-attach">3</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes">Samba</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">0</property>
|
||||
- <property name="top-attach">4</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes">SSH File Transfer Protocol</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">0</property>
|
||||
- <property name="top-attach">5</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes">WebDAV</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">0</property>
|
||||
- <property name="top-attach">6</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes">Prefix</property>
|
||||
- <property name="xalign">0</property>
|
||||
- <attributes>
|
||||
- <attribute name="weight" value="bold"/>
|
||||
- </attributes>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">1</property>
|
||||
- <property name="top-attach">0</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label">afp://</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">1</property>
|
||||
- <property name="top-attach">1</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes" comments="Translators: do not translate ftp:// and ftps://">ftp:// or ftps://</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">1</property>
|
||||
- <property name="top-attach">2</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label">nfs://</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">1</property>
|
||||
- <property name="top-attach">3</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes">smb://</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">1</property>
|
||||
- <property name="top-attach">4</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes" comments="Translators: do not translate sftp:// and ssh://">sftp:// or ssh://</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">1</property>
|
||||
- <property name="top-attach">5</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="label" translatable="yes" comments="Translators: do not translate dav:// and davs://">dav:// or davs://</property>
|
||||
- <property name="xalign">0</property>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="left-attach">1</property>
|
||||
- <property name="top-attach">6</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- </object>
|
||||
- <packing>
|
||||
- <property name="position">3</property>
|
||||
- </packing>
|
||||
- </child>
|
||||
- </object>
|
||||
- </child>
|
||||
+ <property name="text_column">1</property>
|
||||
+ <property name="inline_completion">True</property>
|
||||
+ <property name="popup_completion">False</property>
|
||||
</object>
|
||||
<object class="GtkPopover" id="recent_servers_popover">
|
||||
+ <property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkStack" id="recent_servers_stack">
|
||||
- <property name="visible">1</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="vexpand">1</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
<property name="valign">center</property>
|
||||
+ <property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">18</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="pixel-size">48</property>
|
||||
- <property name="icon-name">network-server-symbolic</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="pixel_size">48</property>
|
||||
+ <property name="icon_name">network-server-symbolic</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">0</property>
|
||||
+ </packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes" comments="Translators: Server as any successfully connected network address">No recent servers found</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
@@ -280,82 +68,98 @@
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="border-width">12</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="border_width">12</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Recent Servers</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">0</property>
|
||||
+ </packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="can-focus">1</property>
|
||||
- <property name="vexpand">1</property>
|
||||
- <property name="shadow-type">in</property>
|
||||
- <property name="min-content-width">250</property>
|
||||
- <property name="min-content-height">200</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">True</property>
|
||||
+ <property name="vexpand">True</property>
|
||||
+ <property name="shadow_type">in</property>
|
||||
+ <property name="min_content_width">250</property>
|
||||
+ <property name="min_content_height">200</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="shadow-type">none</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="shadow_type">none</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="recent_servers_listbox">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="can-focus">1</property>
|
||||
- <property name="selection-mode">none</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">True</property>
|
||||
+ <property name="selection_mode">none</property>
|
||||
<signal name="row-activated" handler="on_recent_servers_listbox_row_activated" object="NautilusGtkPlacesView" swapped="yes"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">list</property>
|
||||
+ <property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<template class="NautilusGtkPlacesView" parent="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
- <property name="can-focus">False</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<signal name="key-press-event" handler="on_key_press_event" object="NautilusGtkPlacesView" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkStack" id="stack">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="vhomogeneous">0</property>
|
||||
- <property name="transition-type">crossfade</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="vhomogeneous">False</property>
|
||||
+ <property name="transition_type">crossfade</property>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="shadow-type">none</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label_xalign">0</property>
|
||||
+ <property name="shadow_type">none</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="hexpand">1</property>
|
||||
- <property name="vexpand">1</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
+ <property name="vexpand">True</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="shadow-type">none</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="shadow_type">none</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="listbox">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="can-focus">1</property>
|
||||
- <property name="selection-mode">none</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">True</property>
|
||||
+ <property name="selection_mode">none</property>
|
||||
<signal name="row-activated" handler="on_listbox_row_activated" object="NautilusGtkPlacesView" swapped="yes"/>
|
||||
</object>
|
||||
</child>
|
||||
@@ -370,51 +174,65 @@
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
- <property name="visible">1</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
- <property name="hexpand">1</property>
|
||||
- <property name="vexpand">1</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
+ <property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="pixel-size">72</property>
|
||||
- <property name="icon-name">edit-find-symbolic</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="pixel_size">72</property>
|
||||
+ <property name="icon_name">edit-find-symbolic</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">0</property>
|
||||
+ </packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">No results found</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
- <attribute name="scale" value="1.44"/>
|
||||
+ <attribute name="scale" value="1.4399999999999999"/>
|
||||
</attributes>
|
||||
</object>
|
||||
<packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Try a different search</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">empty-search</property>
|
||||
+ <property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
@@ -426,89 +244,346 @@
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkActionBar" id="actionbar">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="hexpand">1</property>
|
||||
- <style>
|
||||
- <class name="background"/>
|
||||
- </style>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="hexpand">1</property>
|
||||
- <property name="xalign">0</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
<property name="label" translatable="yes">Connect to _Server</property>
|
||||
- <property name="mnemonic-widget">address_entry</property>
|
||||
- <property name="use-underline">1</property>
|
||||
+ <property name="use_underline">True</property>
|
||||
+ <property name="mnemonic_widget">address_entry</property>
|
||||
+ <property name="xalign">0</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
- </child>
|
||||
- <child>
|
||||
- <object class="GtkButton" id="connect_button">
|
||||
- <property name="label" translatable="yes">Con_nect</property>
|
||||
- <property name="use-underline">1</property>
|
||||
- <property name="visible">1</property>
|
||||
- <property name="can-focus">1</property>
|
||||
- <property name="sensitive">0</property>
|
||||
- <property name="receives-default">1</property>
|
||||
- <property name="valign">center</property>
|
||||
- <signal name="clicked" handler="on_connect_button_clicked" object="NautilusGtkPlacesView" swapped="yes"/>
|
||||
- </object>
|
||||
<packing>
|
||||
- <property name="pack-type">end</property>
|
||||
+ <property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="hexpand">1</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
<child>
|
||||
<object class="GtkEntry" id="address_entry">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="can-focus">1</property>
|
||||
- <property name="hexpand">1</property>
|
||||
- <property name="width-chars">20</property>
|
||||
- <property name="placeholder-text" translatable="yes">Enter server address…</property>
|
||||
- <property name="secondary-icon-name">dialog-question-symbolic</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">True</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
+ <property name="width_chars">20</property>
|
||||
+ <property name="secondary_icon_name">dialog-question-symbolic</property>
|
||||
+ <property name="placeholder_text" translatable="yes">Enter server address…</property>
|
||||
<property name="completion">address_entry_completion</property>
|
||||
- <signal name="notify::text" handler="on_address_entry_text_changed" object="NautilusGtkPlacesView" swapped="yes"/>
|
||||
<signal name="activate" handler="on_connect_button_clicked" object="NautilusGtkPlacesView" swapped="yes"/>
|
||||
<signal name="icon-press" handler="on_address_entry_show_help_pressed" object="NautilusGtkPlacesView" swapped="yes"/>
|
||||
+ <signal name="notify::text" handler="on_address_entry_text_changed" object="NautilusGtkPlacesView" swapped="yes"/>
|
||||
</object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">0</property>
|
||||
+ </packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuButton" id="server_list_button">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="can-focus">1</property>
|
||||
- <property name="receives-default">1</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">True</property>
|
||||
+ <property name="receives_default">True</property>
|
||||
<property name="direction">up</property>
|
||||
<property name="popover">recent_servers_popover</property>
|
||||
- <style>
|
||||
- <class name="server-list-button"/>
|
||||
- </style>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
- <property name="visible">1</property>
|
||||
- <property name="icon-name">pan-down-symbolic</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="icon_name">pan-down-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
+ <style>
|
||||
+ <class name="server-list-button"/>
|
||||
+ </style>
|
||||
</object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">1</property>
|
||||
+ </packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="linked"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
- <property name="pack-type">end</property>
|
||||
+ <property name="pack_type">end</property>
|
||||
+ <property name="position">0</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkButton" id="connect_button">
|
||||
+ <property name="label" translatable="yes">Con_nect</property>
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="sensitive">False</property>
|
||||
+ <property name="can_focus">True</property>
|
||||
+ <property name="receives_default">True</property>
|
||||
+ <property name="valign">center</property>
|
||||
+ <property name="use_underline">True</property>
|
||||
+ <signal name="clicked" handler="on_connect_button_clicked" object="NautilusGtkPlacesView" swapped="yes"/>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="pack_type">end</property>
|
||||
+ <property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
+ <style>
|
||||
+ <class name="background"/>
|
||||
+ </style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</template>
|
||||
+ <object class="GtkPopover" id="server_adresses_popover">
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="relative_to">address_entry</property>
|
||||
+ <child>
|
||||
+ <object class="GtkBox">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="border_width">18</property>
|
||||
+ <property name="orientation">vertical</property>
|
||||
+ <property name="spacing">6</property>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
+ <property name="label" translatable="yes">Server Addresses</property>
|
||||
+ <attributes>
|
||||
+ <attribute name="weight" value="bold"/>
|
||||
+ </attributes>
|
||||
+ <style>
|
||||
+ <class name="dim-label"/>
|
||||
+ </style>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">0</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
+ <property name="label" translatable="yes">Server addresses are made up of a protocol prefix and an address. Examples:</property>
|
||||
+ <property name="wrap">True</property>
|
||||
+ <property name="width_chars">40</property>
|
||||
+ <property name="max_width_chars">40</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">1</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
+ <property name="label">smb://gnome.org, ssh://192.168.0.1, ftp://[2001:db8::1]</property>
|
||||
+ <property name="wrap">True</property>
|
||||
+ <property name="width_chars">40</property>
|
||||
+ <property name="max_width_chars">40</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">2</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkGrid">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="margin_top">12</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
+ <property name="row_spacing">6</property>
|
||||
+ <property name="column_spacing">12</property>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="hexpand">True</property>
|
||||
+ <property name="label" translatable="yes">Available Protocols</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ <attributes>
|
||||
+ <attribute name="weight" value="bold"/>
|
||||
+ </attributes>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">0</property>
|
||||
+ <property name="top_attach">0</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes">AppleTalk</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">0</property>
|
||||
+ <property name="top_attach">1</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes">File Transfer Protocol</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">0</property>
|
||||
+ <property name="top_attach">2</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes">Samba</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">0</property>
|
||||
+ <property name="top_attach">4</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes">SSH File Transfer Protocol</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">0</property>
|
||||
+ <property name="top_attach">5</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes">WebDAV</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">0</property>
|
||||
+ <property name="top_attach">6</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes">Prefix</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ <attributes>
|
||||
+ <attribute name="weight" value="bold"/>
|
||||
+ </attributes>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">1</property>
|
||||
+ <property name="top_attach">0</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label">afp://</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">1</property>
|
||||
+ <property name="top_attach">1</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes" comments="Translators: do not translate ftp:// and ftps://">ftp:// or ftps://</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">1</property>
|
||||
+ <property name="top_attach">2</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes">smb://</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">1</property>
|
||||
+ <property name="top_attach">4</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes" comments="Translators: do not translate sftp:// and ssh://">sftp:// or ssh://</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">1</property>
|
||||
+ <property name="top_attach">5</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes" comments="Translators: do not translate dav:// and davs://">dav:// or davs://</property>
|
||||
+ <property name="xalign">0</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left_attach">1</property>
|
||||
+ <property name="top_attach">6</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <placeholder/>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <placeholder/>
|
||||
+ </child>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">3</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ </object>
|
||||
+ </child>
|
||||
+ </object>
|
||||
</interface>
|
||||
--
|
||||
libgit2 0.26.0
|
||||
|
90
search-engine-tracker-Do-not-lose-filename-results-d.patch
Normal file
90
search-engine-tracker-Do-not-lose-filename-results-d.patch
Normal file
@ -0,0 +1,90 @@
|
||||
diff --git a/src/nautilus-search-engine-tracker.c b/src/nautilus-search-engine-tracker.c
|
||||
index 66494cae8..32b6039a9 100644
|
||||
--- a/src/nautilus-search-engine-tracker.c
|
||||
+++ b/src/nautilus-search-engine-tracker.c
|
||||
@@ -286,6 +286,12 @@ search_finished_idle (gpointer user_data)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+/* This is used to compensate rank if fts:rank is not set (resp. fts:match is
|
||||
+ * not used). The value was determined experimentally. I am conviced that
|
||||
+ * fts:rank is currently always set to 5.0 in case of filename match.
|
||||
+ */
|
||||
+#define FILENAME_RANK 5.0
|
||||
+
|
||||
static void
|
||||
nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
|
||||
{
|
||||
@@ -327,7 +333,11 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
|
||||
mimetypes = nautilus_query_get_mime_types (tracker->query);
|
||||
mime_count = g_list_length (mimetypes);
|
||||
|
||||
- sparql = g_string_new ("SELECT DISTINCT nie:url(?urn) fts:rank(?urn) nfo:fileLastModified(?urn) nfo:fileLastAccessed(?urn)");
|
||||
+ sparql = g_string_new ("SELECT DISTINCT"
|
||||
+ " nie:url(?urn)"
|
||||
+ " xsd:double(COALESCE(?rank2, ?rank1)) AS ?rank"
|
||||
+ " nfo:fileLastModified(?urn)"
|
||||
+ " nfo:fileLastAccessed(?urn)");
|
||||
|
||||
if (tracker->fts_enabled)
|
||||
{
|
||||
@@ -342,16 +352,31 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
|
||||
" tracker:available true;"
|
||||
" nie:url ?url");
|
||||
|
||||
- if (*search_text)
|
||||
+ if (mime_count > 0)
|
||||
{
|
||||
- g_string_append_printf (sparql, "; fts:match '\"%s\"*'", search_text);
|
||||
+ g_string_append (sparql, "; nie:mimeType ?mime");
|
||||
}
|
||||
|
||||
- if (mime_count > 0)
|
||||
+ if (tracker->fts_enabled)
|
||||
{
|
||||
- g_string_append (sparql, "; nie:mimeType ?mime");
|
||||
+ /* Use fts:match only for content search to not lose some filename results due to stop words. */
|
||||
+ g_string_append_printf (sparql,
|
||||
+ " {"
|
||||
+ " ?urn fts:match '\"nie:plainTextContent\" : \"%s\"*' ."
|
||||
+ " BIND(fts:rank(?urn) AS ?rank1) ."
|
||||
+ " } UNION",
|
||||
+ search_text);
|
||||
}
|
||||
|
||||
+ g_string_append_printf (sparql,
|
||||
+ " {"
|
||||
+ " ?urn nfo:fileName ?filename ."
|
||||
+ " FILTER(fn:contains(fn:lower-case(?filename), '%s')) ."
|
||||
+ " BIND(%f AS ?rank2) ."
|
||||
+ " }",
|
||||
+ search_text,
|
||||
+ FILENAME_RANK);
|
||||
+
|
||||
g_string_append_printf (sparql, " . FILTER( ");
|
||||
|
||||
if (!tracker->recursive)
|
||||
@@ -363,11 +388,6 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
|
||||
g_string_append_printf (sparql, "tracker:uri-is-descendant('%s', ?url)", location_uri);
|
||||
}
|
||||
|
||||
- if (!tracker->fts_enabled)
|
||||
- {
|
||||
- g_string_append_printf (sparql, " && fn:contains(fn:lower-case(nfo:fileName(?urn)), '%s')", search_text);
|
||||
- }
|
||||
-
|
||||
date_range = nautilus_query_get_date_range (tracker->query);
|
||||
if (date_range)
|
||||
{
|
||||
@@ -424,7 +444,7 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
|
||||
g_string_append (sparql, ")\n");
|
||||
}
|
||||
|
||||
- g_string_append (sparql, ")} ORDER BY DESC (fts:rank(?urn))");
|
||||
+ g_string_append (sparql, ")} ORDER BY DESC (?rank)");
|
||||
|
||||
tracker->cancellable = g_cancellable_new ();
|
||||
tracker_sparql_connection_query_async (tracker->connection,
|
||||
--
|
||||
2.23.0
|
||||
|
33
search-engine-tracker-Expand-macro-as-string.patch
Normal file
33
search-engine-tracker-Expand-macro-as-string.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From 33fafad8430ac32a750fd3315d507482c8028c15 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ant=C3=B3nio=20Fernandes?= <antoniof@gnome.org>
|
||||
Date: Fri, 29 May 2020 13:16:11 +0100
|
||||
Subject: [PATCH] search-engine-tracker: Expand macro as string
|
||||
|
||||
We have changed the FILENAME_RANK constant from being used as a format
|
||||
string argument to be concatenated as a string during compilation, as
|
||||
detailed in 7f00ede9b410e88106cef34c634cb46e46015e37
|
||||
|
||||
However, I have forgotten to quote the constant, which otherwise cannot
|
||||
be treated as a string to concatenate.
|
||||
|
||||
Fix that now.
|
||||
---
|
||||
src/nautilus-search-engine-tracker.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/nautilus-search-engine-tracker.c b/src/nautilus-search-engine-tracker.c
|
||||
index 571467a25..13470a62e 100644
|
||||
--- a/src/nautilus-search-engine-tracker.c
|
||||
+++ b/src/nautilus-search-engine-tracker.c
|
||||
@@ -290,7 +290,7 @@ search_finished_idle (gpointer user_data)
|
||||
* not used). The value was determined experimentally. I am convinced that
|
||||
* fts:rank is currently always set to 5.0 in case of filename match.
|
||||
*/
|
||||
-#define FILENAME_RANK 5.0
|
||||
+#define FILENAME_RANK "5.0"
|
||||
|
||||
static void
|
||||
nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
|
||||
--
|
||||
2.26.2
|
||||
|
53
search-engine-tracker-Fix-broken-query-under-some-lo.patch
Normal file
53
search-engine-tracker-Fix-broken-query-under-some-lo.patch
Normal file
@ -0,0 +1,53 @@
|
||||
From 7018cdcaa9954271cd82ba1c2620ecdfea176fae Mon Sep 17 00:00:00 2001
|
||||
From: Cristiano Nunes <cfgnunes@gmail.com>
|
||||
Date: Tue, 7 Apr 2020 14:47:41 +0000
|
||||
Subject: [PATCH] search-engine-tracker: Fix broken query under some locales
|
||||
|
||||
We set a 5.0 rank for filename matches in the SPARQL query as a float
|
||||
argument in a format string.
|
||||
|
||||
However, the floats in format strings are translated with the decimal
|
||||
separator from the locale. This means in some locales the rank has a
|
||||
comma instead of a dot, which results in a query error. In turn, this
|
||||
effectively broke the shell search provider.
|
||||
|
||||
Instead of using a format specifier and passing the value as an
|
||||
argument, we should just use compile-time concatenation to insert '5.0'
|
||||
in the query unmodified.
|
||||
|
||||
Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/1412 and #1437
|
||||
|
||||
Cherry-picked from 7f00ede9b410e88106cef34c634cb46e46015e37
|
||||
---
|
||||
src/nautilus-search-engine-tracker.c | 7 +++----
|
||||
1 file changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-search-engine-tracker.c b/src/nautilus-search-engine-tracker.c
|
||||
index 32b6039a9..571467a25 100644
|
||||
--- a/src/nautilus-search-engine-tracker.c
|
||||
+++ b/src/nautilus-search-engine-tracker.c
|
||||
@@ -287,7 +287,7 @@ search_finished_idle (gpointer user_data)
|
||||
}
|
||||
|
||||
/* This is used to compensate rank if fts:rank is not set (resp. fts:match is
|
||||
- * not used). The value was determined experimentally. I am conviced that
|
||||
+ * not used). The value was determined experimentally. I am convinced that
|
||||
* fts:rank is currently always set to 5.0 in case of filename match.
|
||||
*/
|
||||
#define FILENAME_RANK 5.0
|
||||
@@ -372,10 +372,9 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
|
||||
" {"
|
||||
" ?urn nfo:fileName ?filename ."
|
||||
" FILTER(fn:contains(fn:lower-case(?filename), '%s')) ."
|
||||
- " BIND(%f AS ?rank2) ."
|
||||
+ " BIND(" FILENAME_RANK " AS ?rank2) ."
|
||||
" }",
|
||||
- search_text,
|
||||
- FILENAME_RANK);
|
||||
+ search_text);
|
||||
|
||||
g_string_append_printf (sparql, " . FILTER( ");
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
1
sources
Normal file
1
sources
Normal file
@ -0,0 +1 @@
|
||||
SHA512 (nautilus-3.28.1.tar.xz) = 6b695c097e5082062afe8cb036e819c837ce1e2570f581f81860f378e34f38f3020b8802e6a4285243c111d5208e892c419ac92621cdb1d35b2df205a3ccaa13
|
13
window-Add-website-link-to-About-dialog.patch
Normal file
13
window-Add-website-link-to-About-dialog.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
|
||||
index 89d492a76..5ea21b1d8 100644
|
||||
--- a/src/nautilus-window.c
|
||||
+++ b/src/nautilus-window.c
|
||||
@@ -2864,6 +2864,7 @@ nautilus_window_show_about_dialog (NautilusWindow *window)
|
||||
"program-name", program_name,
|
||||
"version", VERSION,
|
||||
"comments", _("Access and organize your files."),
|
||||
+ "website", "https://wiki.gnome.org/action/show/Apps/Files",
|
||||
"copyright", "Copyright © 1999–2018 The Files Authors",
|
||||
"license-type", GTK_LICENSE_GPL_3_0,
|
||||
"artists", artists,
|
||||
|
35
window-Fix-criticals-when-moving-file-to-trash.patch
Normal file
35
window-Fix-criticals-when-moving-file-to-trash.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From 668e0673a7ea3fe4cb6c99bc7b56bc52597e2061 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Holy <oholy@redhat.com>
|
||||
Date: Wed, 25 Sep 2019 09:16:44 +0200
|
||||
Subject: [PATCH] window: Fix criticals when moving file to trash
|
||||
|
||||
The "gtk_revealer_get_transition_type: assertion 'GTK_IS_REVEALER (revealer)'
|
||||
failed" critical is printed when moving file to trash after closing a window.
|
||||
This is because the "undo-changed" signal handler is not disconnected when
|
||||
the window is destroyed. Let's use g_signal_connect_object() to ensure
|
||||
disconnection and prevent those criticals.
|
||||
|
||||
Fixes: https://gitlab.gnome.org/GNOME/nautilus/issues/1076
|
||||
---
|
||||
src/nautilus-window.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
|
||||
index 285a6a6ce..056c75c7a 100644
|
||||
--- a/src/nautilus-window.c
|
||||
+++ b/src/nautilus-window.c
|
||||
@@ -2239,8 +2239,9 @@ nautilus_window_constructed (GObject *self)
|
||||
nautilus_window_set_up_sidebar (window);
|
||||
|
||||
|
||||
- g_signal_connect_after (nautilus_file_undo_manager_get (), "undo-changed",
|
||||
- G_CALLBACK (nautilus_window_on_undo_changed), self);
|
||||
+ g_signal_connect_object (nautilus_file_undo_manager_get (), "undo-changed",
|
||||
+ G_CALLBACK (nautilus_window_on_undo_changed), self,
|
||||
+ G_CONNECT_AFTER);
|
||||
|
||||
/* Is required that the UI is constructed before initializating the actions, since
|
||||
* some actions trigger UI widgets to show/hide. */
|
||||
--
|
||||
2.23.0
|
||||
|
Loading…
Reference in New Issue
Block a user