summaryrefslogtreecommitdiff
path: root/gtk/gtkcssnode.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-01-15 20:27:12 -0500
committerMatthias Clasen <mclasen@redhat.com>2020-01-16 11:26:46 -0500
commit192a24fa1fc93f4b09e9f51397153f0becd60aa5 (patch)
treeb1fddbab29d8d39772b8cfe5efc3dffe8405aaf3 /gtk/gtkcssnode.c
parent2426b9e23a300dfb45b806365547a49e52a0760a (diff)
downloadgtk+-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.c5
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);