diff options
-rw-r--r-- | libnautilus-private/nautilus-desktop-icon-file.c | 2 | ||||
-rw-r--r-- | libnautilus-private/nautilus-file-private.h | 2 | ||||
-rw-r--r-- | libnautilus-private/nautilus-file.c | 16 |
3 files changed, 14 insertions, 6 deletions
diff --git a/libnautilus-private/nautilus-desktop-icon-file.c b/libnautilus-private/nautilus-desktop-icon-file.c index f546efac3..dbdc72ffe 100644 --- a/libnautilus-private/nautilus-desktop-icon-file.c +++ b/libnautilus-private/nautilus-desktop-icon-file.c @@ -271,7 +271,7 @@ nautilus_desktop_icon_file_new (NautilusDesktopLink *link) eazel_dump_stack_trace ("\t", 10); #endif - file->details->directory = directory; + nautilus_file_set_directory (file, directory); icon_file = NAUTILUS_DESKTOP_ICON_FILE (file); icon_file->details->link = link; diff --git a/libnautilus-private/nautilus-file-private.h b/libnautilus-private/nautilus-file-private.h index 5dd41baed..1beaa60fb 100644 --- a/libnautilus-private/nautilus-file-private.h +++ b/libnautilus-private/nautilus-file-private.h @@ -256,6 +256,8 @@ gboolean nautilus_file_set_display_name (NautilusFile const char *display_name, const char *edit_name, gboolean custom); +void nautilus_file_set_directory (NautilusFile *file, + NautilusDirectory *directory); void nautilus_file_set_mount (NautilusFile *file, GMount *mount); diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c index 466023ef5..1c27edd13 100644 --- a/libnautilus-private/nautilus-file.c +++ b/libnautilus-private/nautilus-file.c @@ -500,6 +500,14 @@ nautilus_file_clear_info (NautilusFile *file) clear_metadata (file); } +void +nautilus_file_set_directory (NautilusFile *file, + NautilusDirectory *directory) +{ + g_clear_object (&file->details->directory); + file->details->directory = nautilus_directory_ref (directory); +} + static NautilusFile * nautilus_file_new_from_filename (NautilusDirectory *directory, const char *filename, @@ -530,8 +538,7 @@ nautilus_file_new_from_filename (NautilusDirectory *directory, } else { file = NAUTILUS_FILE (g_object_new (NAUTILUS_TYPE_VFS_FILE, NULL)); } - - file->details->directory = nautilus_directory_ref (directory); + nautilus_file_set_directory (file, directory); file->details->name = eel_ref_str_new (filename); @@ -634,7 +641,7 @@ nautilus_file_new_from_info (NautilusDirectory *directory, g_return_val_if_fail (info != NULL, NULL); file = NAUTILUS_FILE (g_object_new (NAUTILUS_TYPE_VFS_FILE, NULL)); - file->details->directory = nautilus_directory_ref (directory); + nautilus_file_set_directory (file, directory); update_info_and_name (file, info); @@ -2624,8 +2631,7 @@ nautilus_file_update_name_and_directory (NautilusFile *file, monitors = nautilus_directory_remove_file_monitors (old_directory, file); nautilus_directory_remove_file (old_directory, file); - file->details->directory = nautilus_directory_ref (new_directory); - nautilus_directory_unref (old_directory); + nautilus_file_set_directory (file, new_directory); if (name) { update_name_internal (file, name, FALSE); |