2008-08-06 Emmanuele Bassi <ebassi@openedhand.com>

* clutter/clutter-child-meta.c:
	(clutter_child_meta_set_property),
	(clutter_child_meta_class_init): Make the :container and
	:actor properties of ChildMeta construct-only, to allow
	bindings to actually use ChildMeta without abusing the API.

	* clutter/clutter-container.c (create_child_meta): Instead of
	setting the members of the ChildMeta structure, use the
	constructor properties.
This commit is contained in:
Emmanuele Bassi 2008-08-06 10:20:57 +00:00
parent 265f72ff2b
commit 3e31f02211
3 changed files with 46 additions and 6 deletions

View File

@ -1,3 +1,15 @@
2008-08-06 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-child-meta.c:
(clutter_child_meta_set_property),
(clutter_child_meta_class_init): Make the :container and
:actor properties of ChildMeta construct-only, to allow
bindings to actually use ChildMeta without abusing the API.
* clutter/clutter-container.c (create_child_meta): Instead of
setting the members of the ChildMeta structure, use the
constructor properties.
2008-08-04 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-keysyms.h: Resync with keysymdef.h inside Xorg.

View File

@ -47,7 +47,7 @@
#include "clutter-debug.h"
#include "clutter-private.h"
G_DEFINE_TYPE (ClutterChildMeta, clutter_child_meta, G_TYPE_OBJECT);
G_DEFINE_ABSTRACT_TYPE (ClutterChildMeta, clutter_child_meta, G_TYPE_OBJECT);
enum
{
@ -57,6 +57,30 @@ enum
PROP_ACTOR
};
static void
clutter_child_meta_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
ClutterChildMeta *child_meta = CLUTTER_CHILD_META (object);
switch (prop_id)
{
case PROP_CONTAINER:
child_meta->container = g_value_get_object (value);
break;
case PROP_ACTOR:
child_meta->actor = g_value_get_object (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void
clutter_child_meta_get_property (GObject *object,
guint prop_id,
@ -87,6 +111,7 @@ clutter_child_meta_class_init (ClutterChildMetaClass *klass)
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GParamSpec *pspec;
gobject_class->set_property = clutter_child_meta_set_property;
gobject_class->get_property = clutter_child_meta_get_property;
/**
@ -100,7 +125,8 @@ clutter_child_meta_class_init (ClutterChildMetaClass *klass)
"Container",
"The container that created this data",
CLUTTER_TYPE_CONTAINER,
CLUTTER_PARAM_READABLE);
G_PARAM_CONSTRUCT_ONLY |
CLUTTER_PARAM_READWRITE);
g_object_class_install_property (gobject_class, PROP_CONTAINER, pspec);
/**
@ -114,7 +140,8 @@ clutter_child_meta_class_init (ClutterChildMetaClass *klass)
"Actor",
"The actor wrapped by this data",
CLUTTER_TYPE_ACTOR,
CLUTTER_PARAM_READABLE);
G_PARAM_CONSTRUCT_ONLY |
CLUTTER_PARAM_READWRITE);
g_object_class_install_property (gobject_class, PROP_ACTOR, pspec);
}

View File

@ -641,9 +641,10 @@ create_child_meta (ClutterContainer *container,
return;
}
child_meta = g_object_new (iface->child_meta_type, NULL);
child_meta->container = container;
child_meta->actor = actor;
child_meta = g_object_new (iface->child_meta_type,
"container", container,
"actor", actor,
NULL);
data_list = g_object_get_qdata (G_OBJECT (container), quark_child_meta);
data_list = g_slist_prepend (data_list, child_meta);