nautilus r14668 - in trunk: . libnautilus-private
- From: cneumair svn gnome org
- To: svn-commits-list gnome org
- Subject: nautilus r14668 - in trunk: . libnautilus-private
- Date: Sat, 27 Sep 2008 11:13:43 +0000 (UTC)
Author: cneumair
Date: Sat Sep 27 11:13:43 2008
New Revision: 14668
URL: http://svn.gnome.org/viewvc/nautilus?rev=14668&view=rev
Log:
2008-09-27 Christian Neumair <cneumair gnome org>
* libnautilus-private/nautilus-directory-async.c
(link_info_got_data):
Pass link info's URI to
nautilus_link_get_link_info_given_file_contents().
* libnautilus-private/nautilus-link.c
(nautilus_link_get_link_uri_from_desktop),
(nautilus_link_get_link_info_given_file_contents):
* libnautilus-private/nautilus-link.h:
Add an input parameter for the link info's URI to
nautilus_link_get_link_info_given_file_contents().
In nautilus_link_get_link_uri_from_desktop(), when
a desktop icon has an "URI=filename" entry resolve
it like a symbolic link name relative to the link
info parent. Ideally, we'd have
g_file_parse_name_relative() which could do that for us,
but it would mangle URI's fragments and queries anyway.
Modified:
trunk/ChangeLog
trunk/libnautilus-private/nautilus-directory-async.c
trunk/libnautilus-private/nautilus-link.c
trunk/libnautilus-private/nautilus-link.h
Modified: trunk/libnautilus-private/nautilus-directory-async.c
==============================================================================
--- trunk/libnautilus-private/nautilus-directory-async.c (original)
+++ trunk/libnautilus-private/nautilus-directory-async.c Sat Sep 27 11:13:43 2008
@@ -3620,7 +3620,7 @@
goffset bytes_read,
char *file_contents)
{
- char *uri, *name, *icon;
+ char *link_uri, *uri, *name, *icon;
gboolean is_launcher;
nautilus_directory_ref (directory);
@@ -3632,8 +3632,10 @@
/* Handle the case where we read the Nautilus link. */
if (result) {
- nautilus_link_get_link_info_given_file_contents (file_contents, bytes_read,
+ link_uri = nautilus_file_get_uri (file);
+ nautilus_link_get_link_info_given_file_contents (file_contents, bytes_read, link_uri,
&uri, &name, &icon, &is_launcher);
+ g_free (link_uri);
} else {
/* FIXME bugzilla.gnome.org 42433: We should report this error to the user. */
}
Modified: trunk/libnautilus-private/nautilus-link.c
==============================================================================
--- trunk/libnautilus-private/nautilus-link.c (original)
+++ trunk/libnautilus-private/nautilus-link.c Sat Sep 27 11:13:43 2008
@@ -298,8 +298,10 @@
static char *
nautilus_link_get_link_uri_from_desktop (GnomeDesktopItem *desktop_file)
{
+ GFile *file, *parent;
const char *type;
char *retval;
+ char *scheme;
retval = NULL;
@@ -318,6 +320,28 @@
retval = g_strdup (gnome_desktop_item_get_string (desktop_file, "URL"));
}
+ if (retval != NULL) {
+ /* Handle local file names.
+ * Ideally, we'd be able to use
+ * g_file_parse_name(), but it does not know how to resolve
+ * relative file names, since the base directory is unknown.
+ */
+ scheme = g_uri_parse_scheme (retval);
+ if (scheme == NULL) {
+ file = g_file_new_for_uri (gnome_desktop_item_get_location (desktop_file));
+ parent = g_file_get_parent (file);
+ g_object_unref (file);
+
+ if (parent != NULL) {
+ file = g_file_resolve_relative_path (parent, retval);
+ g_free (retval);
+ retval = g_file_get_uri (file);
+ g_object_unref (file);
+ g_object_unref (parent);
+ }
+ }
+ }
+
return retval;
}
@@ -409,6 +433,7 @@
void
nautilus_link_get_link_info_given_file_contents (const char *file_contents,
int link_file_size,
+ const char *file_uri,
char **uri,
char **name,
char **icon,
@@ -426,6 +451,8 @@
return;
}
+ gnome_desktop_item_set_location (desktop_file, file_uri);
+
*uri = nautilus_link_get_link_uri_from_desktop (desktop_file);
*name = nautilus_link_get_link_name_from_desktop (desktop_file);
*icon = nautilus_link_get_link_icon_from_desktop (desktop_file);
Modified: trunk/libnautilus-private/nautilus-link.h
==============================================================================
--- trunk/libnautilus-private/nautilus-link.h (original)
+++ trunk/libnautilus-private/nautilus-link.h Sat Sep 27 11:13:43 2008
@@ -43,6 +43,7 @@
char * nautilus_link_local_get_link_uri (const char *uri);
void nautilus_link_get_link_info_given_file_contents (const char *file_contents,
int link_file_size,
+ const char *file_uri,
char **uri,
char **name,
char **icon,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]