bgo545980 - parse URIs in GtkFileChooserEntry

2009-01-15  Federico Mena Quintero  <federico@novell.com>

	http://bugzilla.gnome.org/show_bug.cgi?id=545980 -
	GtkFileChooserEntry should handle URIs

	* gtk/gtkfilesystem.c (_gtk_file_system_parse): Detect URI schemes
	and parse the full URI.
	(has_uri_scheme): New function, stolen from the old
	gtkfilesystemgnomevfs.c.

Signed-off-by: Federico Mena Quintero <federico@novell.com>

svn path=/trunk/; revision=22154
This commit is contained in:
Federico Mena Quintero 2009-01-21 03:16:13 +00:00 committed by Federico Mena Quintero
parent 3f18507222
commit 9f62525f2b
2 changed files with 34 additions and 1 deletions

View File

@ -1,3 +1,13 @@
2009-01-15 Federico Mena Quintero <federico@novell.com>
http://bugzilla.gnome.org/show_bug.cgi?id=545980 -
GtkFileChooserEntry should handle URIs
* gtk/gtkfilesystem.c (_gtk_file_system_parse): Detect URI schemes
and parse the full URI.
(has_uri_scheme): New function, stolen from the old
gtkfilesystemgnomevfs.c.
2009-01-20 Matthias Clasen <mclasen@redhat.com>
* gtk/gtk.symbols:

View File

@ -637,6 +637,29 @@ _gtk_file_system_list_bookmarks (GtkFileSystem *file_system)
return g_slist_reverse (files);
}
static gboolean
is_valid_scheme_character (char c)
{
return g_ascii_isalnum (c) || c == '+' || c == '-' || c == '.';
}
static gboolean
has_uri_scheme (const char *str)
{
const char *p;
p = str;
if (!is_valid_scheme_character (*p))
return FALSE;
do
p++;
while (is_valid_scheme_character (*p));
return (strncmp (p, "://", 3) == 0);
}
gboolean
_gtk_file_system_parse (GtkFileSystem *file_system,
GFile *base_file,
@ -657,7 +680,7 @@ _gtk_file_system_parse (GtkFileSystem *file_system,
last_slash = strrchr (str, G_DIR_SEPARATOR);
if (str[0] == '~')
if (str[0] == '~' || g_path_is_absolute (str) || has_uri_scheme (str))
file = g_file_parse_name (str);
else
file = g_file_resolve_relative_path (base_file, str);