summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2012-04-18 16:54:04 +0200
committerBenjamin Otte <otte@redhat.com>2012-05-11 16:42:11 +0200
commita65780902a0b3a0497cf9c021f8a0d3e49a87cbd (patch)
tree666a43e47c3b80c9d2f89ce6d824b0e3d5780942
parenta8d8c02ab756db3b78a7c0714997cc847f8e4f3e (diff)
downloadgtk+-a65780902a0b3a0497cf9c021f8a0d3e49a87cbd.tar.gz
cssparser: Keep track of the file
-rw-r--r--gtk/gtkcssparser.c18
-rw-r--r--gtk/gtkcssparserprivate.h1
-rw-r--r--gtk/gtkcssprovider.c1
3 files changed, 15 insertions, 5 deletions
diff --git a/gtk/gtkcssparser.c b/gtk/gtkcssparser.c
index 62d911324c..7d3fa95274 100644
--- a/gtk/gtkcssparser.c
+++ b/gtk/gtkcssparser.c
@@ -38,26 +38,31 @@
struct _GtkCssParser
{
- const char *data;
- GtkCssParserErrorFunc error_func;
- gpointer user_data;
+ const char *data;
+ GFile *file;
+ GtkCssParserErrorFunc error_func;
+ gpointer user_data;
- const char *line_start;
- guint line;
+ const char *line_start;
+ guint line;
};
GtkCssParser *
_gtk_css_parser_new (const char *data,
+ GFile *file,
GtkCssParserErrorFunc error_func,
gpointer user_data)
{
GtkCssParser *parser;
g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (file == NULL || G_IS_FILE (file), NULL);
parser = g_slice_new0 (GtkCssParser);
parser->data = data;
+ if (file)
+ parser->file = g_object_ref (file);
parser->error_func = error_func;
parser->user_data = user_data;
@@ -72,6 +77,9 @@ _gtk_css_parser_free (GtkCssParser *parser)
{
g_return_if_fail (GTK_IS_CSS_PARSER (parser));
+ if (parser->file)
+ g_object_unref (parser->file);
+
g_slice_free (GtkCssParser, parser);
}
diff --git a/gtk/gtkcssparserprivate.h b/gtk/gtkcssparserprivate.h
index 2c83589682..8609531f02 100644
--- a/gtk/gtkcssparserprivate.h
+++ b/gtk/gtkcssparserprivate.h
@@ -30,6 +30,7 @@ typedef void (* GtkCssParserErrorFunc) (GtkCssParser *parser,
gpointer user_data);
GtkCssParser * _gtk_css_parser_new (const char *data,
+ GFile *file,
GtkCssParserErrorFunc error_func,
gpointer user_data);
void _gtk_css_parser_free (GtkCssParser *parser);
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 128edc3af1..6ed7ddefc1 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -1370,6 +1370,7 @@ gtk_css_scanner_new (GtkCssProvider *provider,
}
scanner->parser = _gtk_css_parser_new (text,
+ file,
gtk_css_scanner_parser_error,
scanner);