summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2016-03-30 14:57:50 +0200
committerCarlos Soriano <csoriano@gnome.org>2016-04-05 15:13:51 +0200
commitf6ae5c9d5ccbbffaff67b0d15c6e49f21cbf61c0 (patch)
treeebd0a0cfdc30b34d372aa6ec2b6ba7ecb7aa25d1
parent807785848f49ad4b6bc30ba564dfcf14f874248d (diff)
downloadnautilus-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.c24
-rw-r--r--libnautilus-private/nautilus-file.c17
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);