diff options
author | Carlos Soriano <csoriano@gnome.org> | 2016-03-30 14:57:50 +0200 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2016-04-05 15:13:51 +0200 |
commit | f6ae5c9d5ccbbffaff67b0d15c6e49f21cbf61c0 (patch) | |
tree | ebd0a0cfdc30b34d372aa6ec2b6ba7ecb7aa25d1 | |
parent | 807785848f49ad4b6bc30ba564dfcf14f874248d (diff) | |
download | nautilus-f6ae5c9d5ccbbffaff67b0d15c6e49f21cbf61c0.tar.gz |
desktop-icon-file: override get_target_uri
Now that we can do it in subclasses, use inheritance instead of special
casing in the parent.
-rw-r--r-- | libnautilus-private/nautilus-desktop-icon-file.c | 24 | ||||
-rw-r--r-- | libnautilus-private/nautilus-file.c | 17 |
2 files changed, 25 insertions, 16 deletions
diff --git a/libnautilus-private/nautilus-desktop-icon-file.c b/libnautilus-private/nautilus-desktop-icon-file.c index d0cd02821..89003a9e7 100644 --- a/libnautilus-private/nautilus-desktop-icon-file.c +++ b/libnautilus-private/nautilus-desktop-icon-file.c @@ -344,6 +344,29 @@ nautilus_desktop_icon_file_eject (NautilusFile *file, } } +static char* +real_get_target_uri (NautilusFile *file) +{ + char *uri = NULL; + GFile *location; + NautilusDesktopLink *link; + + g_return_val_if_fail (NAUTILUS_IS_DESKTOP_ICON_FILE (file), NULL); + + link = nautilus_desktop_icon_file_get_link (NAUTILUS_DESKTOP_ICON_FILE (file)); + + if (link != NULL) { + location = nautilus_desktop_link_get_activation_location (link); + g_object_unref (link); + if (location != NULL) { + uri = g_file_get_uri (location); + g_object_unref (location); + } + } + + return uri; +} + static void real_rename (NautilusFile *file, const char *new_name, @@ -465,6 +488,7 @@ nautilus_desktop_icon_file_class_init (NautilusDesktopIconFileClass *klass) file_class->eject = nautilus_desktop_icon_file_eject; file_class->can_rename = real_can_rename; file_class->rename = real_rename; + file_class->get_target_uri = real_get_target_uri; g_type_class_add_private (object_class, sizeof(NautilusDesktopIconFileDetails)); } diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c index 0f46ab754..cad5142ef 100644 --- a/libnautilus-private/nautilus-file.c +++ b/libnautilus-private/nautilus-file.c @@ -3857,26 +3857,11 @@ real_get_target_uri (NautilusFile *file) { char *uri, *target_uri; GFile *location; - NautilusDesktopLink *link; g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL); - if (NAUTILUS_IS_DESKTOP_ICON_FILE (file)) { - link = nautilus_desktop_icon_file_get_link (NAUTILUS_DESKTOP_ICON_FILE (file)); - - if (link != NULL) { - location = nautilus_desktop_link_get_activation_location (link); - g_object_unref (link); - if (location != NULL) { - uri = g_file_get_uri (location); - g_object_unref (location); - return uri; - } - } - } - uri = nautilus_file_get_uri (file); - + /* Check for Nautilus link */ if (nautilus_file_is_nautilus_link (file)) { location = nautilus_file_get_location (file); |