css: Track selected state separately
authorMatthias Clasen <mclasen@redhat.com>
Thu, 16 Jan 2020 01:27:12 +0000 (20:27 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 16 Jan 2020 16:26:46 +0000 (11:26 -0500)
commit192a24fa1fc93f4b09e9f51397153f0becd60aa5
treeb1fddbab29d8d39772b8cfe5efc3dffe8405aaf3
parent2426b9e23a300dfb45b806365547a49e52a0760a
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
gtk/gtkcssmatcher.c
gtk/gtkcssnode.c
gtk/gtkcssselector.c
gtk/gtkcsstypes.c
gtk/gtkcsstypesprivate.h