[gtk+/wip/otte/gadget: 1/22] API: cssselector: Stop supporting regions
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/otte/gadget: 1/22] API: cssselector: Stop supporting regions
- Date: Sun, 11 Oct 2015 19:33:10 +0000 (UTC)
commit 16c11513fff1304fa9d102216cd4c9613c59eabf
Author: Benjamin Otte <otte redhat com>
Date: Sun Sep 6 07:36:02 2015 +0200
API: cssselector: Stop supporting regions
The namespace that belonged to regions is supposed to be used for
CssNode names.
gtk/gtkcssnode.c | 6 +-
gtk/gtkcssselector.c | 223 +-------------------------------------------------
2 files changed, 6 insertions(+), 223 deletions(-)
---
diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c
index a8dcaa0..38d3eb0 100644
--- a/gtk/gtkcssnode.c
+++ b/gtk/gtkcssnode.c
@@ -1189,16 +1189,14 @@ gtk_css_node_add_region (GtkCssNode *cssnode,
GQuark region,
GtkRegionFlags flags)
{
- if (gtk_css_node_declaration_add_region (&cssnode->decl, region, flags))
- gtk_css_node_invalidate (cssnode, GTK_CSS_CHANGE_REGION);
+ gtk_css_node_declaration_add_region (&cssnode->decl, region, flags);
}
void
gtk_css_node_remove_region (GtkCssNode *cssnode,
GQuark region)
{
- if (gtk_css_node_declaration_remove_region (&cssnode->decl, region))
- gtk_css_node_invalidate (cssnode, GTK_CSS_CHANGE_REGION);
+ gtk_css_node_declaration_remove_region (&cssnode->decl, region);
}
gboolean
diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c
index ea4f252..3be62ee 100644
--- a/gtk/gtkcssselector.c
+++ b/gtk/gtkcssselector.c
@@ -332,63 +332,6 @@ static const GtkCssSelectorClass GTK_CSS_SELECTOR_DESCENDANT = {
FALSE
};
-/* DESCENDANT FOR REGION */
-
-static void
-gtk_css_selector_descendant_for_region_print (const GtkCssSelector *selector,
- GString *string)
-{
- g_string_append_c (string, ' ');
-}
-
-static gboolean
-gtk_css_selector_descendant_for_region_foreach_matcher (const GtkCssSelector *selector,
- const GtkCssMatcher *matcher,
- GtkCssSelectorForeachFunc func,
- gpointer data)
-{
- GtkCssMatcher ancestor;
-
- if (_gtk_css_matcher_has_regions (matcher))
- {
- if (func (selector, matcher, data))
- return TRUE;
- }
-
- while (_gtk_css_matcher_get_parent (&ancestor, matcher))
- {
- matcher = &ancestor;
-
- if (func (selector, matcher, data))
- return TRUE;
-
- /* any matchers are dangerous here, as we may loop forever, but
- we can terminate now as all possible matches have already been added */
- if (_gtk_css_matcher_matches_any (matcher))
- break;
- }
-
- return FALSE;
-}
-
-static GtkCssChange
-gtk_css_selector_descendant_for_region_get_change (const GtkCssSelector *selector, GtkCssChange
previous_change)
-{
- return previous_change | _gtk_css_change_for_child (previous_change);
-}
-
-static const GtkCssSelectorClass GTK_CSS_SELECTOR_DESCENDANT_FOR_REGION = {
- "descendant_for_region",
- gtk_css_selector_descendant_for_region_print,
- gtk_css_selector_descendant_for_region_foreach_matcher,
- gtk_css_selector_default_match_one,
- gtk_css_selector_descendant_for_region_get_change,
- gtk_css_selector_default_add_specificity,
- gtk_css_selector_default_hash_one,
- gtk_css_selector_default_compare_one,
- FALSE
-};
-
/* CHILD */
static void
@@ -709,107 +652,6 @@ comp_name (const GtkCssSelector *a,
DEFINE_SIMPLE_SELECTOR(name, NAME, print_name, match_name, hash_name, comp_name, FALSE, FALSE, TRUE)
-/* REGION */
-
-static void
-gtk_css_selector_region_print (const GtkCssSelector *selector,
- GString *string)
-{
- char *region_names[] = {
- "even",
- "odd",
- "first-child",
- "last-child",
- "only-child",
- "sorted"
- };
- guint i;
-
- g_string_append (string, selector->region.name);
-
- for (i = 0; i < G_N_ELEMENTS (region_names); i++)
- {
- if (selector->region.flags & (1 << i))
- {
- g_string_append_c (string, ':');
- g_string_append (string, region_names[i]);
- }
- }
-}
-
-static gboolean
-gtk_css_selector_region_match_one (const GtkCssSelector *selector,
- const GtkCssMatcher *matcher)
-{
- return _gtk_css_matcher_has_region (matcher, selector->region.name, selector->region.flags);
-}
-
-static GtkCssChange
-gtk_css_selector_region_get_change (const GtkCssSelector *selector, GtkCssChange previous_change)
-{
- return previous_change | GTK_CSS_CHANGE_REGION;
-}
-
-static inline guint
-count_bits (guint n)
-{
-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
- return (guint) __builtin_popcount (n);
-#elif defined(__clang__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 1))
- return (guint) __builtin_popcount (n);
-#elif defined(_MSC_VER) && _MSC_VER >= 1500
- return (guint) __popcnt (n);
-#else
- guint result = 0;
-
- for (result = 0; n != 0; result++)
- n &= n - 1;
-
- return result;
-#endif
-}
-
-static void
-gtk_css_selector_region_add_specificity (const GtkCssSelector *selector,
- guint *ids,
- guint *classes,
- guint *elements)
-{
- (*elements)++;
-
- (*classes) += count_bits (selector->region.flags);
-}
-
-static guint
-gtk_css_selector_region_hash_one (const GtkCssSelector *a)
-{
- return GPOINTER_TO_UINT (a->region.name) ^ a->region.flags;
-}
-
-static int
-gtk_css_selector_region_compare_one (const GtkCssSelector *a,
- const GtkCssSelector *b)
-{
- if (a->region.name < b->region.name)
- return -1;
- else if (a->region.name > b->region.name)
- return 1;
- else
- return a->region.flags - b->region.flags;
-}
-
-static const GtkCssSelectorClass GTK_CSS_SELECTOR_REGION = {
- "region",
- gtk_css_selector_region_print,
- gtk_css_selector_default_foreach_matcher,
- gtk_css_selector_region_match_one,
- gtk_css_selector_region_get_change,
- gtk_css_selector_region_add_specificity,
- gtk_css_selector_region_hash_one,
- gtk_css_selector_region_compare_one,
- TRUE
-};
-
/* CLASS */
static void
@@ -1317,31 +1159,6 @@ parse_selector_pseudo_class_nth_child (GtkCssParser *parser,
return selector;
}
-static GtkRegionFlags
-try_parse_selector_region_pseudo_class (GtkCssParser *parser)
-{
- static const struct {
- const char *name;
- GtkRegionFlags flags;
- } region_flags[] = {
- { "even", GTK_REGION_EVEN },
- { "odd", GTK_REGION_ODD },
- { "first-child", GTK_REGION_FIRST },
- { "last-child", GTK_REGION_LAST },
- { "only-child", GTK_REGION_ONLY },
- { "sorted", GTK_REGION_SORTED }
- };
- guint i;
-
- for (i = 0; i < G_N_ELEMENTS (region_flags); i++)
- {
- if (_gtk_css_parser_try (parser, region_flags[i].name, FALSE))
- return region_flags[i].flags;
- }
-
- return 0;
-}
-
static GtkCssSelector *
parse_selector_pseudo_class (GtkCssParser *parser,
GtkCssSelector *selector,
@@ -1458,25 +1275,14 @@ parse_simple_selector (GtkCssParser *parser,
GtkCssSelector *selector)
{
gboolean parsed_something = FALSE;
- guint region_offset = 0;
char *name;
name = _gtk_css_parser_try_ident (parser, FALSE);
if (name)
{
- if (_gtk_style_context_check_region_name (name))
- {
- selector = gtk_css_selector_new (>K_CSS_SELECTOR_REGION,
- selector);
- selector->region.name = g_intern_string (name);
- region_offset = gtk_css_selector_size (selector);
- }
- else
- {
- selector = gtk_css_selector_new (>K_CSS_SELECTOR_NAME,
- selector);
- selector->name.reference = get_type_reference (name);
- }
+ selector = gtk_css_selector_new (>K_CSS_SELECTOR_NAME,
+ selector);
+ selector->name.reference = get_type_reference (name);
g_free (name);
parsed_something = TRUE;
}
@@ -1494,18 +1300,7 @@ parse_simple_selector (GtkCssParser *parser,
else if (_gtk_css_parser_try (parser, ":not(", TRUE))
selector = parse_selector_negation (parser, selector);
else if (_gtk_css_parser_try (parser, ":", FALSE))
- {
- GtkRegionFlags region_flags;
- if (region_offset &&
- (region_flags = try_parse_selector_region_pseudo_class (parser)))
- {
- selector[gtk_css_selector_size (selector) - region_offset].region.flags |= region_flags;
- }
- else
- {
- selector = parse_selector_pseudo_class (parser, selector, FALSE);
- }
- }
+ selector = parse_selector_pseudo_class (parser, selector, FALSE);
else if (!parsed_something)
{
_gtk_css_parser_error (parser, "Expected a valid selector");
@@ -1522,16 +1317,6 @@ parse_simple_selector (GtkCssParser *parser,
_gtk_css_parser_skip_whitespace (parser);
- /* This is the big region hack where we change the descendant matcher
- * to a version that respects regions.
- */
- if (selector)
- {
- if ((selector[0].class == >K_CSS_SELECTOR_ANY || selector[0].class == >K_CSS_SELECTOR_REGION)
- && selector[1].class == >K_CSS_SELECTOR_DESCENDANT)
- selector[1].class = >K_CSS_SELECTOR_DESCENDANT_FOR_REGION;
- }
-
return selector;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]