static GtkCssStyle * gtk_css_node_create_style (GtkCssNode *cssnode) { const GtkCssNodeDeclaration *decl; GtkCssMatcher matcher; GtkCssStyle *parent; GtkCssStyle *style; decl = gtk_css_node_get_declaration (cssnode); parent = cssnode->parent ? cssnode->parent->style : NULL; style = lookup_in_global_parent_cache (cssnode, decl); if (style) return g_object_ref (style); if (gtk_css_node_init_matcher (cssnode, &matcher)) style = gtk_css_static_style_new_compute (gtk_css_node_get_style_provider (cssnode), &matcher, parent); else style = gtk_css_static_style_new_compute (gtk_css_node_get_style_provider (cssnode), NULL, parent); store_in_global_parent_cache (cssnode, decl, style); return style; }
static gboolean gtk_css_matcher_node_get_previous (GtkCssMatcher *matcher, const GtkCssMatcher *next) { GtkCssNode *node; node = get_previous_visible_sibling (next->node.node); if (node == NULL) return FALSE; return gtk_css_node_init_matcher (node, matcher); }
static gboolean gtk_css_matcher_node_get_parent (GtkCssMatcher *matcher, const GtkCssMatcher *child) { GtkCssNode *node; node = gtk_css_node_get_parent (child->node.node); if (node == NULL) return FALSE; return gtk_css_node_init_matcher (node, matcher); }