diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-01-15 20:27:12 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-01-16 11:26:46 -0500 |
commit | 192a24fa1fc93f4b09e9f51397153f0becd60aa5 (patch) | |
tree | b1fddbab29d8d39772b8cfe5efc3dffe8405aaf3 /gtk/gtkcssnode.c | |
parent | 2426b9e23a300dfb45b806365547a49e52a0760a (diff) | |
download | gtk+-192a24fa1fc93f4b09e9f51397153f0becd60aa5.tar.gz |
css: Track selected state separately
Like the previous change, this reduces the number of
css nodes reacting to parent-state changes. The remaining
parent-state cases here are due to :link.
Before (numbers from widget-factory with Adwaita):
2247 nodes
class 612
name 2246
id 2
first-child 148
last-child 156
state 2245
hover 562
disabled 859
backdrop 1080
sibling-name 63
sibling-disabled 51
parent-class 586
parent-name 788
parent-id 2
parent-first-child 78
parent-last-child 78
parent-state 236
parent-hover 5
parent-disabled 91
parent-backdrop 4
After:
2247 nodes
class 612
name 2246
id 2
first-child 148
last-child 156
state 2245
hover 562
disabled 859
backdrop 1080
selected 579
sibling-name 63
sibling-disabled 51
parent-class 586
parent-name 788
parent-id 2
parent-first-child 78
parent-last-child 78
parent-state 115
parent-hover 5
parent-disabled 91
parent-backdrop 4
parent-selected 144
Diffstat (limited to 'gtk/gtkcssnode.c')
-rw-r--r-- | gtk/gtkcssnode.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c index dc535e6332..7af6c7ab93 100644 --- a/gtk/gtkcssnode.c +++ b/gtk/gtkcssnode.c @@ -1153,9 +1153,12 @@ gtk_css_node_set_state (GtkCssNode *cssnode, change |= GTK_CSS_CHANGE_DISABLED; if (states & GTK_STATE_FLAG_BACKDROP) change |= GTK_CSS_CHANGE_BACKDROP; + if (states & GTK_STATE_FLAG_SELECTED) + change |= GTK_CSS_CHANGE_SELECTED; if (states & ~(GTK_STATE_FLAG_PRELIGHT | GTK_STATE_FLAG_INSENSITIVE | - GTK_STATE_FLAG_BACKDROP)) + GTK_STATE_FLAG_BACKDROP | + GTK_STATE_FLAG_SELECTED)) change |= GTK_CSS_CHANGE_STATE; gtk_css_node_invalidate (cssnode, change); |