From d14bace6d0d9505b28c153ab629ca455d97a9fd2 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 15 Jan 2020 20:27:12 -0500 Subject: 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/gtkcssnode.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gtk/gtkcssnode.c') diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c index 4f45e9a1d6..a7eb75d7d9 100644 --- a/gtk/gtkcssnode.c +++ b/gtk/gtkcssnode.c @@ -1160,6 +1160,8 @@ gtk_css_node_set_state (GtkCssNode *cssnode, change |= GTK_CSS_CHANGE_STATE; if (states & ~GTK_STATE_FLAG_BACKDROP) change |= GTK_CSS_CHANGE_BACKDROP; + if (states & ~GTK_STATE_FLAG_SELECTED) + change |= GTK_CSS_CHANGE_SELECTED; gtk_css_node_invalidate (cssnode, change); g_object_notify_by_pspec (G_OBJECT (cssnode), cssnode_properties[PROP_STATE]); -- cgit v1.2.1