[gtk+] css: Track the tree selector matches
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] css: Track the tree selector matches
- Date: Fri, 30 Nov 2012 13:56:54 +0000 (UTC)
commit 6bec57777184f044274a3519e944fc304c91f0ed
Author: Alexander Larsson <alexl redhat com>
Date: Thu Nov 29 15:29:14 2012 +0100
css: Track the tree selector matches
gtk/gtkcssprovider.c | 2 ++
gtk/gtkcssselector.c | 5 +++++
gtk/gtkcssselectorprivate.h | 1 +
3 files changed, 8 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 88a1bd4..358fed2 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -986,6 +986,7 @@ struct _WidgetPropertyValue {
struct GtkCssRuleset
{
GtkCssSelector *selector;
+ GtkCssSelectorTree *selector_match;
WidgetPropertyValue *widget_style;
PropertyValue *styles;
GtkBitmask *set_styles;
@@ -2429,6 +2430,7 @@ gtk_css_provider_postprocess (GtkCssProvider *css_provider)
_gtk_css_selector_tree_builder_add (builder,
ruleset->selector,
+ &ruleset->selector_match,
ruleset);
}
diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c
index 626b28a..2ede3b4 100644
--- a/gtk/gtkcssselector.c
+++ b/gtk/gtkcssselector.c
@@ -1691,6 +1691,7 @@ _gtk_css_selector_tree_free (GtkCssSelectorTree *tree)
typedef struct {
gpointer match;
GtkCssSelector *current_selector;
+ GtkCssSelectorTree **selector_match;
} GtkCssSelectorRuleSetInfo;
@@ -1755,6 +1756,8 @@ subdivide_infos (GList *infos, GtkCssSelectorTree *parent)
if (exact_matches == NULL)
exact_matches = g_ptr_array_new ();
g_ptr_array_add (exact_matches, info->match);
+ if (info->selector_match != NULL)
+ *info->selector_match = tree;
}
else
matched = g_list_prepend (matched, info);
@@ -1800,12 +1803,14 @@ _gtk_css_selector_tree_builder_free (GtkCssSelectorTreeBuilder *builder)
void
_gtk_css_selector_tree_builder_add (GtkCssSelectorTreeBuilder *builder,
GtkCssSelector *selectors,
+ GtkCssSelectorTree **selector_match,
gpointer match)
{
GtkCssSelectorRuleSetInfo *info = g_new0 (GtkCssSelectorRuleSetInfo, 1);
info->match = match;
info->current_selector = selectors;
+ info->selector_match = selector_match;
builder->infos = g_list_prepend (builder->infos, info);
}
diff --git a/gtk/gtkcssselectorprivate.h b/gtk/gtkcssselectorprivate.h
index e4c0997..7d811b7 100644
--- a/gtk/gtkcssselectorprivate.h
+++ b/gtk/gtkcssselectorprivate.h
@@ -48,6 +48,7 @@ GPtrArray *_gtk_css_selector_tree_match_all (GtkCssSelectorTree *tree,
GtkCssSelectorTreeBuilder *_gtk_css_selector_tree_builder_new (void);
void _gtk_css_selector_tree_builder_add (GtkCssSelectorTreeBuilder *builder,
GtkCssSelector *selectors,
+ GtkCssSelectorTree **selector_match,
gpointer match);
GtkCssSelectorTree * _gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder);
void _gtk_css_selector_tree_builder_free (GtkCssSelectorTreeBuilder *builder);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]