[nautilus] file: extract shared code for handling gone files on renaming
- From: Carlos Soriano Sánchez <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] file: extract shared code for handling gone files on renaming
- Date: Thu, 14 Apr 2016 08:51:45 +0000 (UTC)
commit 6f364bd8a2316bef4b029a4116148bfba0c68a66
Author: Carlos Soriano <csoriano gnome org>
Date: Tue Apr 12 15:51:27 2016 +0200
file: extract shared code for handling gone files on renaming
Just to make it cleaner.
https://bugzilla.gnome.org/show_bug.cgi?id=712620
libnautilus-private/nautilus-desktop-icon-file.c | 16 ++-------
libnautilus-private/nautilus-file.c | 41 ++++++++++++++-------
libnautilus-private/nautilus-file.h | 7 ++++
3 files changed, 37 insertions(+), 27 deletions(-)
---
diff --git a/libnautilus-private/nautilus-desktop-icon-file.c
b/libnautilus-private/nautilus-desktop-icon-file.c
index 95a45e4..f08995c 100644
--- a/libnautilus-private/nautilus-desktop-icon-file.c
+++ b/libnautilus-private/nautilus-desktop-icon-file.c
@@ -386,19 +386,9 @@ real_rename (NautilusFile *file,
* We need to check this here because there may be a new
* file with the same name.
*/
- if (nautilus_file_is_gone (file)) {
- /* Claim that something changed even if the rename
- * failed. This makes it easier for some clients who
- * see the "reverting" to the old name as "changing
- * back".
- */
- nautilus_file_changed (file);
- error = g_error_new (G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
- _("File not found"));
- (* callback) (file, NULL, error, callback_data);
- g_error_free (error);
- return;
- }
+ if (nautilus_file_rename_handle_file_gone (file, callback, callback_data)) {
+ return;
+ }
link = nautilus_desktop_icon_file_get_link (NAUTILUS_DESKTOP_ICON_FILE (file));
old_name = nautilus_file_get_display_name (file);
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 8e7d170..31965d0 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -1811,6 +1811,30 @@ nautilus_file_rename (NautilusFile *file,
callback_data);
}
+gboolean
+nautilus_file_rename_handle_file_gone (NautilusFile *file,
+ NautilusFileOperationCallback callback,
+ gpointer callback_data)
+{
+ GError *error;
+
+ if (nautilus_file_is_gone (file)) {
+ /* Claim that something changed even if the rename
+ * failed. This makes it easier for some clients who
+ * see the "reverting" to the old name as "changing
+ * back".
+ */
+ nautilus_file_changed (file);
+ error = g_error_new (G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
+ _("File not found"));
+ (* callback) (file, NULL, error, callback_data);
+ g_error_free (error);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static void
real_rename (NautilusFile *file,
const char *new_name,
@@ -1847,20 +1871,9 @@ real_rename (NautilusFile *file,
* We need to check this here because there may be a new
* file with the same name.
*/
- if (nautilus_file_is_gone (file)) {
- /* Claim that something changed even if the rename
- * failed. This makes it easier for some clients who
- * see the "reverting" to the old name as "changing
- * back".
- */
- nautilus_file_changed (file);
- error = g_error_new (G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
- _("File not found"));
- (* callback) (file, NULL, error, callback_data);
- g_error_free (error);
- return;
- }
-
+ if (nautilus_file_rename_handle_file_gone (file, callback, callback_data)) {
+ return;
+ }
/* Test the name-hasn't-changed case explicitly, for two reasons.
* (1) rename returns an error if new & old are same.
* (2) We don't want to send file-changed signal if nothing changed.
diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h
index 4c2645a..8623588 100644
--- a/libnautilus-private/nautilus-file.h
+++ b/libnautilus-private/nautilus-file.h
@@ -334,6 +334,13 @@ void nautilus_file_cancel (Nautilu
*/
gboolean nautilus_file_is_gone (NautilusFile
*file);
+/* Used in subclasses that handles the rename of a file. This handles the case
+ * when the file is gone. If this returns TRUE, simply do nothing
+ */
+gboolean nautilus_file_rename_handle_file_gone (NautilusFile
*file,
+ NautilusFileOperationCallback
callback,
+ gpointer
callback_data);
+
/* Return true if this file is not confirmed to have ever really
* existed. This is true when the NautilusFile object has been created, but no I/O
* has yet confirmed the existence of a file by that name.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]