return FALSE;
}
+
+/**
+ * gtk_widget_add_style_class:
+ * @widget: a #GtkWidget
+ * @style_class: The style class to add to @widget, without
+ * the leading '.' used for notation of style classes
+ *
+ * Adds @style_class to @widget. After calling this function, @widget's
+ * style will match for @style_class, after the CSS matching rules.
+ */
+void
+gtk_widget_add_style_class (GtkWidget *widget,
+ const char *style_class)
+{
+ GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (style_class != NULL);
+ g_return_if_fail (style_class[0] != '\0');
+ g_return_if_fail (style_class[0] != '.');
+
+ gtk_css_node_add_class (priv->cssnode, g_quark_from_string (style_class));
+}
+
+/**
+ * gtk_widget_remove_style_class:
+ * @widget: a #GtkWidget
+ * @style_class: The style class to remove from @widget, without
+ * the leading '.' used for notation of style classes
+ *
+ * Removes @style_class from @widget. After this, the style of @widget
+ * will stop matching for @style_class.
+ */
+void
+gtk_widget_remove_style_class (GtkWidget *widget,
+ const char *style_class)
+{
+ GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
+ GQuark class_quark;
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (style_class != NULL);
+ g_return_if_fail (style_class[0] != '\0');
+ g_return_if_fail (style_class[0] != '.');
+
+ class_quark = g_quark_from_string (style_class);
+ if (!class_quark)
+ return;
+
+ gtk_css_node_remove_class (priv->cssnode, class_quark);
+}
+
+/**
+ * gtk_widget_has_style_class:
+ * @widget: a #GtkWidget
+ * @style_class: A CSS style class, without the leading '.'
+ * used for notation of style classes
+ *
+ * Returns whether @style_class is currently applied to @widget.
+ *
+ * Returns: %TRUE if @style_class is currently applied to @widget,
+ * %FALSE otherwise.
+ */
+gboolean
+gtk_widget_has_style_class (GtkWidget *widget,
+ const char *style_class)
+{
+ GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
+ GQuark class_quark;
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+ g_return_val_if_fail (style_class != NULL, FALSE);
+ g_return_val_if_fail (style_class[0] != '\0', FALSE);
+ g_return_val_if_fail (style_class[0] != '.', FALSE);
+
+ class_quark = g_quark_from_string (style_class);
+ if (!class_quark)
+ return FALSE;
+
+ return gtk_css_node_has_class (priv->cssnode, class_quark);
+}