summaryrefslogtreecommitdiff
path: root/gtk/gtkstyleproperty.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2011-12-31 17:36:22 +0100
committerBenjamin Otte <otte@redhat.com>2012-01-09 18:37:52 +0100
commit7a4bbc8f35b65ed5f3447ca880dde140fd62e7de (patch)
treeb7a4546bbdf0803a961f821c6e0fdcd687202228 /gtk/gtkstyleproperty.c
parent7a7669478014492bcaa3664fcea229cc263976e2 (diff)
downloadgtk+-7a4bbc8f35b65ed5f3447ca880dde140fd62e7de.tar.gz
styleproperty: Add GtkStyleProperty::value-type
Diffstat (limited to 'gtk/gtkstyleproperty.c')
-rw-r--r--gtk/gtkstyleproperty.c37
1 files changed, 36 insertions, 1 deletions
diff --git a/gtk/gtkstyleproperty.c b/gtk/gtkstyleproperty.c
index f7f2efebd0..646e5c8837 100644
--- a/gtk/gtkstyleproperty.c
+++ b/gtk/gtkstyleproperty.c
@@ -54,7 +54,8 @@
enum {
PROP_0,
- PROP_NAME
+ PROP_NAME,
+ PROP_VALUE_TYPE
};
static GHashTable *parse_funcs = NULL;
@@ -90,6 +91,9 @@ gtk_style_property_set_property (GObject *object,
g_assert (g_hash_table_lookup (klass->properties, property->name) == NULL);
g_hash_table_insert (klass->properties, property->name, property);
break;
+ case PROP_VALUE_TYPE:
+ property->value_type = g_value_get_gtype (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -109,6 +113,9 @@ gtk_style_property_get_property (GObject *object,
case PROP_NAME:
g_value_set_string (value, property->name);
break;
+ case PROP_VALUE_TYPE:
+ g_value_set_gtype (value, property->value_type);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -131,6 +138,13 @@ _gtk_style_property_class_init (GtkStylePropertyClass *klass)
P_("The name of the property"),
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (object_class,
+ PROP_VALUE_TYPE,
+ g_param_spec_gtype ("value-type",
+ P_("Value type"),
+ P_("The value type returned by GtkStyleContext"),
+ G_TYPE_NONE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
klass->properties = g_hash_table_new (g_str_hash, g_str_equal);
}
@@ -138,6 +152,7 @@ _gtk_style_property_class_init (GtkStylePropertyClass *klass)
static void
_gtk_style_property_init (GtkStyleProperty *property)
{
+ property->value_type = G_TYPE_NONE;
}
static void
@@ -2449,6 +2464,25 @@ _gtk_style_property_get_name (GtkStyleProperty *property)
return property->name;
}
+/**
+ * _gtk_style_property_get_value_type:
+ * @property: the property to query
+ *
+ * Gets the value type of the @property, if the property is usable
+ * in public API via _gtk_style_property_assign() and
+ * _gtk_style_property_query(). If the @property is not usable in that
+ * way, %G_TYPE_NONE is returned.
+ *
+ * Returns: the value type in use or %G_TYPE_NONE if none.
+ **/
+GType
+_gtk_style_property_get_value_type (GtkStyleProperty *property)
+{
+ g_return_val_if_fail (GTK_IS_STYLE_PROPERTY (property), G_TYPE_NONE);
+
+ return property->value_type;
+}
+
void
_gtk_style_property_register (GParamSpec *pspec,
@@ -2462,6 +2496,7 @@ _gtk_style_property_register (GParamSpec *pspec,
node = g_object_new (GTK_TYPE_CSS_STYLE_PROPERTY,
"name", pspec->name,
+ "value-type", pspec->value_type,
NULL);
node->flags = flags;
node->pspec = pspec;