--- gnome-desktop-2.21.91/libgnome-desktop/gnome-bg.c 2008-02-11 19:35:11.000000000 +0100 +++ trunk/libgnome-desktop/gnome-bg.c 2008-02-15 15:09:57.000000000 +0100 @@ -238,8 +238,13 @@ gnome_bg_set_uri (GnomeBG *bg, const char *uri) { + char *free_me = NULL; + g_return_if_fail (bg != NULL); + if (g_path_is_absolute (uri)) + uri = free_me = g_filename_to_uri (uri, NULL, NULL); + if (is_different (bg, uri)) { char *tmp = g_strdup (uri); @@ -253,6 +258,8 @@ emit_changed (bg); } + + g_free (free_me); } static void @@ -1076,10 +1083,11 @@ file = g_file_new_for_uri (uri); info = g_file_query_info (file, G_FILE_ATTRIBUTE_TIME_MODIFIED, G_FILE_QUERY_INFO_NONE, NULL, NULL); - if (info) + if (info) { mtime = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED); - g_object_unref (info); + g_object_unref (info); + } g_object_unref (file); } @@ -1602,6 +1610,21 @@ return strtol (text, NULL, 0); } +static char * +make_uri (char *file) +{ + if (g_path_is_absolute (file)) { + char *result = g_filename_to_uri (file, NULL, NULL); + + g_free (file); + + return result; + } + else { + return file; + } +} + static void handle_text (GMarkupParseContext *context, const gchar *text, @@ -1638,9 +1661,11 @@ else if (stack_is (parser, "file", "static", "background", NULL) || stack_is (parser, "from", "transition", "background", NULL)) { slide->file1 = g_strdup (text); + slide->file1 = make_uri (slide->file1); } else if (stack_is (parser, "to", "transition", "background", NULL)) { slide->file2 = g_strdup (text); + slide->file2 = make_uri (slide->file2); } }