[gtk+/wip/otte/tokenizer: 46/78] cssstylesheet: Store the file we loaded from
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/otte/tokenizer: 46/78] cssstylesheet: Store the file we loaded from
- Date: Fri, 25 Nov 2016 22:41:31 +0000 (UTC)
commit b3ee2328802459cd666614f8c7cf508f25e39a33
Author: Benjamin Otte <otte redhat com>
Date: Mon Mar 21 17:53:30 2016 +0100
cssstylesheet: Store the file we loaded from
gtk/gtkcssstylesheet.c | 34 ++++++++++++++++++++++++++++++++++
gtk/gtkcssstylesheetprivate.h | 2 ++
2 files changed, 36 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcssstylesheet.c b/gtk/gtkcssstylesheet.c
index 03a027b..afb9d53 100644
--- a/gtk/gtkcssstylesheet.c
+++ b/gtk/gtkcssstylesheet.c
@@ -25,6 +25,8 @@ typedef struct _GtkCssStyleSheetPrivate GtkCssStyleSheetPrivate;
struct _GtkCssStyleSheetPrivate {
GtkCssRule *parent_rule;
GtkCssRuleList *css_rules;
+
+ GFile *file;
};
G_DEFINE_TYPE_WITH_PRIVATE (GtkCssStyleSheet, gtk_css_style_sheet, G_TYPE_OBJECT)
@@ -36,6 +38,8 @@ gtk_css_style_sheet_finalize (GObject *object)
GtkCssStyleSheetPrivate *priv = gtk_css_style_sheet_get_instance_private (style_sheet);
g_object_unref (priv->css_rules);
+ if (priv->file)
+ g_object_unref (priv->file);
G_OBJECT_CLASS (gtk_css_style_sheet_parent_class)->finalize (object);
}
@@ -62,6 +66,23 @@ gtk_css_style_sheet_new (void)
return g_object_new (GTK_TYPE_CSS_STYLE_SHEET, NULL);
}
+static void
+gtk_css_style_sheet_set_file (GtkCssStyleSheet *style_sheet,
+ GFile *file)
+{
+ GtkCssStyleSheetPrivate *priv = gtk_css_style_sheet_get_instance_private (style_sheet);
+
+ if (priv->file == file)
+ return;
+
+ if (priv->file)
+ g_object_unref (priv->file);
+
+ priv->file = file;
+ if (file)
+ g_object_ref (file);
+}
+
void
gtk_css_style_sheet_parse (GtkCssStyleSheet *style_sheet,
GtkCssTokenSource *source)
@@ -72,10 +93,23 @@ gtk_css_style_sheet_parse (GtkCssStyleSheet *style_sheet,
g_return_if_fail (source != NULL);
priv = gtk_css_style_sheet_get_instance_private (style_sheet);
+ gtk_css_style_sheet_set_file (style_sheet, gtk_css_token_source_get_location (source));
gtk_css_rule_list_parse (priv->css_rules, source, NULL, style_sheet);
}
+GFile *
+gtk_css_style_sheet_get_file (GtkCssStyleSheet *style_sheet)
+{
+ GtkCssStyleSheetPrivate *priv;
+
+ g_return_val_if_fail (GTK_IS_CSS_STYLE_SHEET (style_sheet), NULL);
+
+ priv = gtk_css_style_sheet_get_instance_private (style_sheet);
+
+ return priv->file;
+}
+
GtkCssStyleSheet *
gtk_css_style_sheet_get_parent_style_sheet (GtkCssStyleSheet *style_sheet)
{
diff --git a/gtk/gtkcssstylesheetprivate.h b/gtk/gtkcssstylesheetprivate.h
index f2d9132..6cc319f 100644
--- a/gtk/gtkcssstylesheetprivate.h
+++ b/gtk/gtkcssstylesheetprivate.h
@@ -57,6 +57,8 @@ void gtk_css_style_sheet_parse (GtkCssS
/* StyleSheet interface */
GtkCssStyleSheet * gtk_css_style_sheet_get_parent_style_sheet (GtkCssStyleSheet
*style_sheet);
+GFile * gtk_css_style_sheet_get_file (GtkCssStyleSheet
*style_sheet);
+
/* CSSStyleSheet interface */
GtkCssRule * gtk_css_style_sheet_get_parent_rule (GtkCssStyleSheet
*style_sheet);
GtkCssRuleList * gtk_css_style_sheet_get_css_rules (GtkCssStyleSheet
*style_sheet);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]