From 85d86d61dedf1977d21929bda5334efa924b320a Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 10 Mar 2015 17:31:16 +0100 Subject: [PATCH] cssnode: Add gtk_css_node_add/remove_state() API This mirrors gtk_css_node_add/remove_class() APIs and allows you to specify a (set of) state(s) to set or unset. These functions are purely convenience. --- gtk/gtkcssnode.c | 16 ++++++++++++++++ gtk/gtkcssnodeprivate.h | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c index 39b481a38b..c409bee919 100644 --- a/gtk/gtkcssnode.c +++ b/gtk/gtkcssnode.c @@ -950,6 +950,22 @@ gtk_css_node_get_state (GtkCssNode *cssnode) return gtk_css_node_declaration_get_state (cssnode->decl); } +void +gtk_css_node_add_state (GtkCssNode *cssnode, + GtkStateFlags state_flags) +{ + gtk_css_node_set_state (cssnode, + gtk_css_node_get_state (cssnode) | state_flags); +} + +void +gtk_css_node_remove_state (GtkCssNode *cssnode, + GtkStateFlags state_flags) +{ + gtk_css_node_set_state (cssnode, + gtk_css_node_get_state (cssnode) & ~state_flags); +} + void gtk_css_node_set_junction_sides (GtkCssNode *cssnode, GtkJunctionSides junction_sides) diff --git a/gtk/gtkcssnodeprivate.h b/gtk/gtkcssnodeprivate.h index 8a155a74e8..90a811f065 100644 --- a/gtk/gtkcssnodeprivate.h +++ b/gtk/gtkcssnodeprivate.h @@ -122,6 +122,10 @@ const char * gtk_css_node_get_id (GtkCssNode * void gtk_css_node_set_state (GtkCssNode *cssnode, GtkStateFlags state_flags); GtkStateFlags gtk_css_node_get_state (GtkCssNode *cssnode); +void gtk_css_node_add_state (GtkCssNode *cssnode, + GtkStateFlags state_flags); +void gtk_css_node_remove_state (GtkCssNode *cssnode, + GtkStateFlags state_flags); void gtk_css_node_set_junction_sides (GtkCssNode *cssnode, GtkJunctionSides junction_sides); GtkJunctionSides gtk_css_node_get_junction_sides (GtkCssNode *cssnode);