Ensure we can load images via resource:// uris from CSS

This commit is contained in:
Alexander Larsson 2012-01-16 11:18:42 +01:00
parent 6afeb8d355
commit e46971306a
2 changed files with 20 additions and 4 deletions

View File

@ -67,19 +67,25 @@ gtk_css_image_url_parse (GtkCssImage *image,
GtkCssImageUrl *url = GTK_CSS_IMAGE_URL (image);
GdkPixbuf *pixbuf;
GFile *file;
char *path;
cairo_t *cr;
GError *error = NULL;
GFileInputStream *input;
file = _gtk_css_parser_read_url (parser, base);
if (file == NULL)
return FALSE;
path = g_file_get_path (file);
input = g_file_read (file, NULL, &error);
if (input == NULL)
{
_gtk_css_parser_take_error (parser, error);
return FALSE;
}
g_object_unref (file);
pixbuf = gdk_pixbuf_new_from_file (path, &error);
g_free (path);
pixbuf = gdk_pixbuf_new_from_stream (G_INPUT_STREAM (input), NULL, &error);
g_object_unref (input);
if (pixbuf == NULL)
{
_gtk_css_parser_take_error (parser, error);

View File

@ -873,6 +873,7 @@ _gtk_css_parser_read_url (GtkCssParser *parser,
GFile *base)
{
gchar *path;
char *scheme;
GFile *file;
if (_gtk_css_parser_try (parser, "url", FALSE))
@ -907,6 +908,15 @@ _gtk_css_parser_read_url (GtkCssParser *parser,
g_free (path);
return NULL;
}
scheme = g_uri_parse_scheme (path);
if (scheme != NULL)
{
file = g_file_new_for_uri (path);
g_free (path);
g_free (scheme);
return file;
}
}
else
{