+static void
+gtk_css_custom_property_query (GtkStyleProperty *property,
+ GValue *value,
+ GtkStyleQueryFunc query_func,
+ gpointer query_data)
+{
+ GtkCssStyleProperty *style = GTK_CSS_STYLE_PROPERTY (property);
+ GtkCssCustomProperty *custom = GTK_CSS_CUSTOM_PROPERTY (property);
+ GtkCssValue *css_value;
+
+ css_value = (* query_func) (_gtk_css_style_property_get_id (style), query_data);
+ if (css_value == NULL)
+ css_value = _gtk_css_style_property_get_initial_value (style);
+
+ g_value_init (value, custom->pspec->value_type);
+ g_value_copy (_gtk_css_typed_value_get (css_value), value);
+}
+
+static void
+gtk_css_custom_property_assign (GtkStyleProperty *property,
+ GtkStyleProperties *props,
+ GtkStateFlags state,
+ const GValue *value)
+{
+ GtkCssValue *css_value = _gtk_css_typed_value_new (value);
+ _gtk_style_properties_set_property_by_property (props,
+ GTK_CSS_STYLE_PROPERTY (property),
+ state,
+ css_value);
+ _gtk_css_value_unref (css_value);