mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 10:50:10 +00:00
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:
parent
3f18507222
commit
9f62525f2b
10
ChangeLog
10
ChangeLog
@ -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:
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user