css: Introduce GTK_CSS_CHANGE_ROOT

This is meant for any change triggered by the root, such as default
values, icontheme or scale factor.

So far it is only triggered by reparenting a CSS node and it's
managed the same way as GTK_CSS_CHANGE_SOURCE.
This commit is contained in:
Benjamin Otte
2020-02-09 22:08:25 +01:00
parent e16b84d6c8
commit 00df57d29b
3 changed files with 12 additions and 7 deletions

View File

@@ -89,7 +89,7 @@
* if we need to change things. */
#define GTK_CSS_RADICAL_CHANGE (GTK_CSS_CHANGE_ID | GTK_CSS_CHANGE_NAME | GTK_CSS_CHANGE_CLASS | \
GTK_CSS_CHANGE_PARENT_ID | GTK_CSS_CHANGE_PARENT_NAME | GTK_CSS_CHANGE_PARENT_CLASS | \
GTK_CSS_CHANGE_SOURCE | GTK_CSS_CHANGE_PARENT_STYLE)
GTK_CSS_CHANGE_SOURCE | GTK_CSS_CHANGE_ROOT | GTK_CSS_CHANGE_PARENT_STYLE)
/* When these change, we need to recompute the change flags for the new style
* since they may have changed.
@@ -754,7 +754,9 @@ gtk_css_node_reposition (GtkCssNode *node,
if (gtk_css_node_get_style_provider_or_null (node) == NULL)
gtk_css_node_invalidate_style_provider (node);
gtk_css_node_invalidate (node, GTK_CSS_CHANGE_TIMESTAMP | GTK_CSS_CHANGE_ANIMATIONS);
gtk_css_node_invalidate (node, GTK_CSS_CHANGE_ROOT
| GTK_CSS_CHANGE_TIMESTAMP
| GTK_CSS_CHANGE_ANIMATIONS);
if (new_parent)
{

View File

@@ -38,7 +38,7 @@ _gtk_css_change_for_sibling (GtkCssChange match)
| GTK_CSS_CHANGE_SELECTED \
| GTK_CSS_CHANGE_BACKDROP)
#define KEEP_STATES ( ~(BASE_STATES|GTK_CSS_CHANGE_SOURCE|GTK_CSS_CHANGE_PARENT_STYLE) \
#define KEEP_STATES ( ~(BASE_STATES|GTK_CSS_CHANGE_SOURCE|GTK_CSS_CHANGE_ROOT|GTK_CSS_CHANGE_PARENT_STYLE) \
| GTK_CSS_CHANGE_NTH_CHILD \
| GTK_CSS_CHANGE_NTH_LAST_CHILD)
@@ -76,7 +76,7 @@ _gtk_css_change_for_child (GtkCssChange match)
| GTK_CSS_CHANGE_SIBLING_BACKDROP \
| GTK_CSS_CHANGE_SIBLING_SELECTED)
#define KEEP_STATES (~(BASE_STATES|GTK_CSS_CHANGE_SOURCE|GTK_CSS_CHANGE_PARENT_STYLE))
#define KEEP_STATES (~(BASE_STATES|GTK_CSS_CHANGE_SOURCE|GTK_CSS_CHANGE_ROOT|GTK_CSS_CHANGE_PARENT_STYLE))
return (match & KEEP_STATES) | ((match & BASE_STATES) << GTK_CSS_CHANGE_PARENT_SHIFT);
@@ -145,6 +145,7 @@ gtk_css_change_print (GtkCssChange change,
{ GTK_CSS_CHANGE_PARENT_SIBLING_SELECTED, "parent-sibling-selected" },
{ GTK_CSS_CHANGE_SOURCE, "source" },
{ GTK_CSS_CHANGE_ROOT, "root" },
{ GTK_CSS_CHANGE_PARENT_STYLE, "parent-style" },
{ GTK_CSS_CHANGE_TIMESTAMP, "timestamp" },
{ GTK_CSS_CHANGE_ANIMATIONS, "animations" },

View File

@@ -90,9 +90,10 @@ typedef struct _GtkCssStaticStyle GtkCssStaticStyle;
/* add more */
#define GTK_CSS_CHANGE_SOURCE (1ULL << 48)
#define GTK_CSS_CHANGE_PARENT_STYLE (1ULL << 49)
#define GTK_CSS_CHANGE_TIMESTAMP (1ULL << 50)
#define GTK_CSS_CHANGE_ANIMATIONS (1ULL << 51)
#define GTK_CSS_CHANGE_ROOT (1ULL << 49)
#define GTK_CSS_CHANGE_PARENT_STYLE (1ULL << 50)
#define GTK_CSS_CHANGE_TIMESTAMP (1ULL << 51)
#define GTK_CSS_CHANGE_ANIMATIONS (1ULL << 52)
#define GTK_CSS_CHANGE_RESERVED_BIT (1ULL << 62)
@@ -122,6 +123,7 @@ typedef guint64 GtkCssChange;
GTK_CSS_CHANGE_ANY_PARENT | \
GTK_CSS_CHANGE_ANY_PARENT_SIBLING | \
GTK_CSS_CHANGE_SOURCE | \
GTK_CSS_CHANGE_ROOT | \
GTK_CSS_CHANGE_PARENT_STYLE | \
GTK_CSS_CHANGE_TIMESTAMP | \
GTK_CSS_CHANGE_ANIMATIONS)