diff --git a/ChangeLog b/ChangeLog index 3b1232fb8..0d89eba31 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2007-11-15 Emmanuele Bassi + + * clutter/clutter-actor.[ch]: Massive API clean-ups. Initial + fixes for bugs #614 and #628. + + * clutter/clutter-main.c: + * clutter/clutter-stage.c: Update internal usage of the actor + API. + + * tests/test-events.c: Update test suite. + 2007-11-15 Øyvind Kolås * clutter/clutter-main.c: (generate_enter_leave_events), diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c index 8f283494d..ed14911d8 100644 --- a/clutter/clutter-actor.c +++ b/clutter/clutter-actor.c @@ -794,6 +794,9 @@ clutter_actor_request_coords (ClutterActor *self, ClutterActorClass *klass; gboolean x_change, y_change, width_change, height_change; + g_return_if_fail (CLUTTER_IS_ACTOR (self)); + g_return_if_fail (box != NULL); + klass = CLUTTER_ACTOR_GET_CLASS (self); if (klass->request_coords) @@ -853,6 +856,9 @@ clutter_actor_query_coords (ClutterActor *self, { ClutterActorClass *klass; + g_return_if_fail (CLUTTER_IS_ACTOR (self)); + g_return_if_fail (box != NULL); + klass = CLUTTER_ACTOR_GET_CLASS (self); box->x1 = self->priv->coords.x1; @@ -892,24 +898,16 @@ clutter_actor_set_property (GObject *object, switch (prop_id) { case PROP_X: - clutter_actor_set_position (actor, - g_value_get_int (value), - clutter_actor_get_y (actor)); + clutter_actor_set_x (actor, g_value_get_int (value)); break; case PROP_Y: - clutter_actor_set_position (actor, - clutter_actor_get_x (actor), - g_value_get_int (value)); + clutter_actor_set_y (actor, g_value_get_int (value)); break; case PROP_WIDTH: - clutter_actor_set_size (actor, - g_value_get_int (value), - clutter_actor_get_height (actor)); + clutter_actor_set_width (actor, g_value_get_int (value)); break; case PROP_HEIGHT: - clutter_actor_set_size (actor, - clutter_actor_get_width (actor), - g_value_get_int (value)); + clutter_actor_set_height (actor, g_value_get_int (value)); break; case PROP_DEPTH: clutter_actor_set_depth (actor, g_value_get_int (value)); @@ -948,10 +946,7 @@ clutter_actor_set_property (GObject *object, } break; case PROP_REACTIVE: - if (g_value_get_boolean (value) == TRUE) - clutter_actor_set_reactive (actor); - else - clutter_actor_unset_reactive (actor); + clutter_actor_set_reactive (actor, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -1785,29 +1780,45 @@ clutter_actor_move_by (ClutterActor *self, clutter_actor_request_coords (self, &box); } +/* local inline version, without type checking to be used by + * set_width() and set_height(). if one of the dimensions is < 0 + * it will not be changed + */ +static inline void +clutter_actor_set_size_internal (ClutterActor *self, + gint width, + gint height) +{ + ClutterActorBox box; + + clutter_actor_query_coords (self, &box); + + if (width > 0) + box.x2 = box.x1 + CLUTTER_UNITS_FROM_INT (width); + + if (height > 0) + box.y2 = box.y1 + CLUTTER_UNITS_FROM_INT (height); + + clutter_actor_request_coords (self, &box); +} + /** * clutter_actor_set_size * @self: A #ClutterActor - * @width: New width of actor in pixels - * @height: New height of actor in pixels + * @width: New width of actor in pixels, or -1 + * @height: New height of actor in pixels, or -1 * - * Sets the actors size in pixels. + * Sets the actors size in pixels. If @width and/or @height are -1 the + * actor will assume the same size of its bounding box. */ void clutter_actor_set_size (ClutterActor *self, gint width, gint height) { - ClutterActorBox box; - g_return_if_fail (CLUTTER_IS_ACTOR (self)); - clutter_actor_query_coords (self, &box); - - box.x2 = box.x1 + CLUTTER_UNITS_FROM_INT (width); - box.y2 = box.y1 + CLUTTER_UNITS_FROM_INT (height); - - clutter_actor_request_coords (self, &box); + clutter_actor_set_size_internal (self, width, height); } /** @@ -1838,6 +1849,34 @@ clutter_actor_get_size (ClutterActor *self, *height = CLUTTER_UNITS_TO_INT (box.y2 - box.y1); } +/** + * clutter_actor_get_position: + * @self: a #ClutterActor + * @x: return location for the X coordinate, or %NULL + * @y: return location for the Y coordinate, or %NULL + * + * Retrieves the position of an actor. + * + * Since: 0.6 + */ +void +clutter_actor_get_position (ClutterActor *self, + gint *x, + gint *y) +{ + ClutterActorBox box = { 0, }; + + g_return_if_fail (CLUTTER_IS_ACTOR (self)); + + clutter_actor_query_coords (self, &box); + + if (x) + *x = CLUTTER_UNITS_TO_INT (box.x1); + + if (y) + *y = CLUTTER_UNITS_TO_INT (box.y1); +} + /* * clutter_actor_get_abs_position_units * @self: A #ClutterActor @@ -2021,11 +2060,12 @@ clutter_actor_get_height (ClutterActor *self) * since: 2.0 **/ void -clutter_actor_set_width (ClutterActor *self, guint width) +clutter_actor_set_width (ClutterActor *self, + guint width) { - clutter_actor_set_size (self, - width, - clutter_actor_get_height (self)); + g_return_if_fail (CLUTTER_IS_ACTOR (self)); + + clutter_actor_set_size_internal (self, width, -1); } /** @@ -2038,13 +2078,53 @@ clutter_actor_set_width (ClutterActor *self, guint width) * since: 2.0 **/ void -clutter_actor_set_height (ClutterActor *self, guint height) +clutter_actor_set_height (ClutterActor *self, + guint height) { - clutter_actor_set_size (self, - clutter_actor_get_width (self), - height); + g_return_if_fail (CLUTTER_IS_ACTOR (self)); + + clutter_actor_set_size_internal (self, -1, height); } +/** + * clutter_actor_set_x: + * @self: a #ClutterActor + * @x: the actors position on the X axis + * + * Sets the actor's x position relative to its parent. + * + * Since: 0.6 + */ +void +clutter_actor_set_x (ClutterActor *self, + gint x) +{ + g_return_if_fail (CLUTTER_IS_ACTOR (self)); + + clutter_actor_set_position (self, + x, + clutter_actor_get_y (self)); +} + +/** + * clutter_actor_set_y: + * @self: a #ClutterActor + * @y: the actors position on the Y axis + * + * Sets the actor's y position relative to its parent. + * + * Since: 0.6 + */ +void +clutter_actor_set_y (ClutterActor *self, + gint y) +{ + g_return_if_fail (CLUTTER_IS_ACTOR (self)); + + clutter_actor_set_position (self, + clutter_actor_get_x (self), + y); +} /** * clutter_actor_get_x @@ -2779,6 +2859,47 @@ clutter_actor_has_clip (ClutterActor *self) return self->priv->has_clip; } +/** + * clutter_actor_get_clip: + * @self: a #ClutterActor + * @xoff: return location for the X offset of the clip rectangle, or %NULL + * @yoff: return location for the Y offset of the clip rectangle, or %NULL + * @width: return location for the width of the clip rectangle, or %NULL + * @height: return location for the height of the clip rectangle, or %NULL + * + * Gets the clip area for @self, in pixels. + * + * Since: 0.6 + */ +void +clutter_actor_get_clip (ClutterActor *self, + gint *xoff, + gint *yoff, + gint *width, + gint *height) +{ + ClutterActorPrivate *priv; + ClutterGeometry clip = { 0, }; + + g_return_if_fail (CLUTTER_IS_ACTOR (self)); + + priv = self->priv; + + if (!priv->has_clip) + return; + + clip = priv->clip; + + if (xoff) + *xoff = clip.x; + if (yoff) + *yoff = clip.y; + if (width) + *width = clip.width; + if (height) + *height = clip.height; +} + /** * clutter_actor_set_parent: * @self: A #ClutterActor @@ -3161,37 +3282,29 @@ out: /** * clutter_actor_set_reactive: * @actor: a #ClutterActor + * @reactive: whether the actor should be reactive to events * * Sets @actor as reactive. Reactive actors will receive events. * * Since: 0.6 */ void -clutter_actor_set_reactive (ClutterActor *actor) +clutter_actor_set_reactive (ClutterActor *actor, + gboolean reactive) { g_return_if_fail (CLUTTER_IS_ACTOR (actor)); - CLUTTER_ACTOR_SET_FLAGS (actor, CLUTTER_ACTOR_REACTIVE); + if (reactive == CLUTTER_ACTOR_IS_REACTIVE (actor)) + return; + + if (reactive) + CLUTTER_ACTOR_SET_FLAGS (actor, CLUTTER_ACTOR_REACTIVE); + else + CLUTTER_ACTOR_UNSET_FLAGS (actor, CLUTTER_ACTOR_REACTIVE); } /** - * clutter_actor_unset_reactive: - * @actor: a #ClutterActor - * - * Sets @actor as not reactive. - * - * Since: 0.6 - */ -void -clutter_actor_unset_reactive (ClutterActor *actor) -{ - g_return_if_fail (CLUTTER_IS_ACTOR (actor)); - - CLUTTER_ACTOR_UNSET_FLAGS (actor, CLUTTER_ACTOR_REACTIVE); -} - -/** - * clutter_actor_is_reactive: + * clutter_actor_get_reactive: * @actor: a #ClutterActor * * Checks whether @actor is marked as reactive. @@ -3201,55 +3314,13 @@ clutter_actor_unset_reactive (ClutterActor *actor) * Since: 0.6 */ gboolean -clutter_actor_is_reactive (ClutterActor *actor) +clutter_actor_get_reactive (ClutterActor *actor) { g_return_val_if_fail (CLUTTER_IS_ACTOR (actor), FALSE); return CLUTTER_ACTOR_IS_REACTIVE (actor); } -/** - * clutter_actor_push_transform_child: - * - * Makes all the children follow the parent's transformation matrix - * until clutter_actor_pop_transform_child(). - * - * This function should be used by every actor with children inside - * its paint function, in order to make its children transform (that is: - * rotate, scale, etc.) with its parent, like: - * - * - * clutter_actor_push_transform_child (); - * for (l = my_actor->children; l != NULL; l = l->next) - * { - * ClutterActor *actor = l->data; - * clutter_actor_paint (child); - * } - * clutter_actor_pop_transform_child (); - * - * - * Since: 0.6 - */ -void -clutter_actor_push_transform_child (void) -{ - cogl_push_matrix (); -} - -/** - * clutter_actor_pop_transform_child: - * - * Cancels the effects of a previous clutter_actor_push_transform_child() - * call. - * - * Since: 0.6 - */ -void -clutter_actor_pop_transform_child (void) -{ - cogl_pop_matrix (); -} - /* * ClutterGeometry */ diff --git a/clutter/clutter-actor.h b/clutter/clutter-actor.h index 871175197..9fd477da4 100644 --- a/clutter/clutter-actor.h +++ b/clutter/clutter-actor.h @@ -222,6 +222,7 @@ struct _ClutterActorClass }; GType clutter_actor_get_type (void) G_GNUC_CONST; + void clutter_actor_show (ClutterActor *self); void clutter_actor_show_all (ClutterActor *self); void clutter_actor_hide (ClutterActor *self); @@ -233,6 +234,7 @@ void clutter_actor_pick (ClutterActor *sel const ClutterColor *color); void clutter_actor_queue_redraw (ClutterActor *self); void clutter_actor_destroy (ClutterActor *self); + void clutter_actor_request_coords (ClutterActor *self, ClutterActorBox *box); void clutter_actor_query_coords (ClutterActor *self, @@ -252,21 +254,25 @@ void clutter_actor_set_size (ClutterActor *sel void clutter_actor_set_position (ClutterActor *self, gint x, gint y); +void clutter_actor_get_position (ClutterActor *self, + gint *x, + gint *y); void clutter_actor_get_abs_position (ClutterActor *self, gint *x, gint *y); guint clutter_actor_get_width (ClutterActor *self); guint clutter_actor_get_height (ClutterActor *self); - -void clutter_actor_set_width (ClutterActor *self, - guint width); - -void clutter_actor_set_height (ClutterActor *self, - guint height); - - +void clutter_actor_set_width (ClutterActor *self, + guint width); +void clutter_actor_set_height (ClutterActor *self, + guint height); gint clutter_actor_get_x (ClutterActor *self); gint clutter_actor_get_y (ClutterActor *self); +void clutter_actor_set_x (ClutterActor *self, + gint x); +void clutter_actor_set_y (ClutterActor *self, + gint y); + void clutter_actor_rotate_x (ClutterActor *self, gfloat angle, gint y, @@ -297,6 +303,7 @@ gdouble clutter_actor_get_rzang (ClutterActor *sel ClutterFixed clutter_actor_get_rxangx (ClutterActor *self); ClutterFixed clutter_actor_get_ryangx (ClutterActor *self); ClutterFixed clutter_actor_get_rzangx (ClutterActor *self); + void clutter_actor_set_opacity (ClutterActor *self, guint8 opacity); guint8 clutter_actor_get_opacity (ClutterActor *self); @@ -311,6 +318,11 @@ void clutter_actor_set_clip (ClutterActor *sel gint height); void clutter_actor_remove_clip (ClutterActor *self); gboolean clutter_actor_has_clip (ClutterActor *self); +void clutter_actor_get_clip (ClutterActor *self, + gint *xoff, + gint *yoff, + gint *width, + gint *height); void clutter_actor_set_parent (ClutterActor *self, ClutterActor *parent); ClutterActor * clutter_actor_get_parent (ClutterActor *self); @@ -326,6 +338,9 @@ void clutter_actor_lower_bottom (ClutterActor *sel void clutter_actor_set_depth (ClutterActor *self, gint depth); gint clutter_actor_get_depth (ClutterActor *self); +void clutter_actor_set_reactive (ClutterActor *actor, + gboolean reactive); +gboolean clutter_actor_get_reactive (ClutterActor *actor); void clutter_actor_set_scalex (ClutterActor *self, ClutterFixed scale_x, ClutterFixed scale_y); @@ -366,25 +381,10 @@ void clutter_actor_apply_transform_to_point (ClutterActor ClutterVertex *point, ClutterVertex *vertex); -void clutter_actor_push_transform_child (void); -void clutter_actor_pop_transform_child (void); - -/* Per actor event handling - may change */ -gboolean -clutter_actor_event (ClutterActor *actor, - ClutterEvent *event, - gboolean capture); -void -clutter_actor_set_reactive (ClutterActor *actor); - -void -clutter_actor_unset_reactive (ClutterActor *actor); - -gboolean -clutter_actor_is_reactive (ClutterActor *actor); - -ClutterActor* -clutter_get_actor_by_id (guint32 id); +gboolean clutter_actor_event (ClutterActor *actor, + ClutterEvent *event, + gboolean capture); +ClutterActor * clutter_get_actor_by_gid (guint32 id); G_END_DECLS diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c index 51d2359ed..d63b59c15 100644 --- a/clutter/clutter-main.c +++ b/clutter/clutter-main.c @@ -238,7 +238,7 @@ _clutter_do_pick (ClutterStage *stage, /* Decode color back into an ID, taking into account fb depth */ id = pixel[2]>>(8-b) | pixel[1]<>(8-g) | pixel[0]<<(g+b)>>(8-r); - return clutter_get_actor_by_id (id); + return clutter_get_actor_by_gid (id); } /** @@ -1176,7 +1176,7 @@ deliver_event (ClutterEvent *event) /* Build 'tree' of events */ while (actor && n_tree_events < MAX_EVENT_DEPTH) { - if (clutter_actor_is_reactive (actor) || + if (clutter_actor_get_reactive (actor) || clutter_actor_get_parent (actor) == NULL) event_tree[n_tree_events++] = g_object_ref (actor); @@ -1410,15 +1410,18 @@ clutter_do_event (ClutterEvent *event) } /** - * clutter_get_actor_by_id + * clutter_get_actor_by_gid * @id: a #ClutterActor ID. * - * FIXME. + * Retrieves the #ClutterActor with @id. + * + * Return value: the actor with the passed id or %NULL. The returned + * actor does not have its reference count increased. * * Since: 0.6 */ ClutterActor* -clutter_get_actor_by_id (guint32 id) +clutter_get_actor_by_gid (guint32 id) { ClutterMainContext *context; diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c index e0da549ac..328b3beab 100644 --- a/clutter/clutter-stage.c +++ b/clutter/clutter-stage.c @@ -398,7 +398,7 @@ clutter_stage_init (ClutterStage *self) priv->perspective.z_far = CLUTTER_FLOAT_TO_FIXED (100.0); clutter_actor_set_size (CLUTTER_ACTOR (self), 640, 480); - clutter_actor_set_reactive (CLUTTER_ACTOR (self)); + clutter_actor_set_reactive (CLUTTER_ACTOR (self), TRUE); clutter_stage_set_key_focus (self, NULL); } diff --git a/doc/reference/ChangeLog b/doc/reference/ChangeLog index dfc687a56..2beacd66b 100644 --- a/doc/reference/ChangeLog +++ b/doc/reference/ChangeLog @@ -1,3 +1,11 @@ +2007-11-15 Emmanuele Bassi + + * Makefile.am: Ignore the OSX backend subdirectory and + scan the clutter-x11.h header + + * clutter-docs.sgml: + * clutter-sections.txt: Update. + 2007-11-15 Emmanuele Bassi * clutter-sections.txt: Add new ClutterTimeline API diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am index 1050ea77a..7660b0a1a 100644 --- a/doc/reference/Makefile.am +++ b/doc/reference/Makefile.am @@ -42,7 +42,8 @@ FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c -HFILE_GLOB=$(top_srcdir)/clutter/*.h $(top_srcdir)/clutter/glx/clutter-glx.h +HFILE_GLOB=$(top_srcdir)/clutter/*.h \ + $(top_srcdir)/clutter/x11/clutter-x11.h CFILE_GLOB=$(top_srcdir)/clutter/*.c # Header files to ignore when scanning. @@ -62,6 +63,8 @@ IGNORE_HFILES=\ eglnative \ eglx \ glx \ + osx \ + x11 \ json \ pango \ sdl diff --git a/doc/reference/clutter-docs.sgml b/doc/reference/clutter-docs.sgml index c9dca0d6a..8f38998ad 100644 --- a/doc/reference/clutter-docs.sgml +++ b/doc/reference/clutter-docs.sgml @@ -169,7 +169,7 @@ - + diff --git a/doc/reference/clutter-sections.txt b/doc/reference/clutter-sections.txt index dd9b9ce52..889091889 100644 --- a/doc/reference/clutter-sections.txt +++ b/doc/reference/clutter-sections.txt @@ -44,6 +44,8 @@ CLUTTER_UNITS_TO_INT
clutter-label ClutterLabel +ClutterLabel +ClutterLabelClass clutter_label_new clutter_label_new_with_text clutter_label_new_full @@ -67,8 +69,6 @@ clutter_label_get_use_markup clutter_label_set_alignment clutter_label_get_alignment -ClutterLabel -ClutterLabelClass CLUTTER_LABEL CLUTTER_IS_LABEL CLUTTER_TYPE_LABEL @@ -307,9 +307,6 @@ clutter_actor_queue_redraw clutter_actor_destroy clutter_actor_request_coords clutter_actor_query_coords -clutter_actor_set_reactive -clutter_actor_unset_reactive -clutter_actor_is_reactive clutter_actor_event @@ -319,12 +316,15 @@ clutter_actor_get_coords clutter_actor_set_size clutter_actor_get_size clutter_actor_set_position +clutter_actor_get_position clutter_actor_get_abs_position clutter_actor_set_width clutter_actor_get_width clutter_actor_set_height clutter_actor_get_height +clutter_actor_set_x clutter_actor_get_x +clutter_actor_set_y clutter_actor_get_y clutter_actor_move_by clutter_actor_rotate_x @@ -334,10 +334,13 @@ clutter_actor_set_opacity clutter_actor_get_opacity clutter_actor_set_name clutter_actor_get_name -clutter_actor_get_id +clutter_actor_get_gid + + clutter_actor_set_clip clutter_actor_remove_clip clutter_actor_has_clip +clutter_actor_get_clip clutter_actor_set_parent @@ -375,6 +378,10 @@ clutter_actor_rotate_zx clutter_actor_set_scale_with_gravity clutter_actor_set_scale_with_gravityx + +clutter_actor_set_reactive +clutter_actor_get_reactive + CLUTTER_TYPE_GEOMETRY CLUTTER_TYPE_ACTOR_BOX @@ -396,6 +403,8 @@ clutter_vertex_get_type
clutter-texture ClutterTexture +ClutterTexture +ClutterTextureClass ClutterTextureFlags clutter_texture_new clutter_texture_new_from_pixbuf @@ -414,15 +423,15 @@ clutter_texture_get_x_tile_detail clutter_texture_get_y_tile_detail clutter_texture_has_generated_tiles clutter_texture_is_tiled + -ClutterTexture -ClutterTextureClass CLUTTER_TEXTURE CLUTTER_IS_TEXTURE CLUTTER_TYPE_TEXTURE CLUTTER_TEXTURE_CLASS CLUTTER_IS_TEXTURE_CLASS CLUTTER_TEXTURE_GET_CLASS + ClutterTexturePrivate clutter_texture_error_quark @@ -502,7 +511,7 @@ ClutterTimelineDirection clutter_timeline_set_direction clutter_timeline_get_direction - clutter_timeline_start clutter_timeline_pause clutter_timeline_stop @@ -883,7 +892,9 @@ clutter_main_level clutter_get_debug_enabled clutter_get_show_fps clutter_get_timestamp -clutter_get_actor_by_id +clutter_get_actor_by_gid +clutter_get_default_frame_rate +clutter_set_default_frame_rate clutter_get_motion_events_enabled clutter_enable_motion_events @@ -904,22 +915,22 @@ clutter_redraw
-clutter-glx -GLX Specific Support -clutter_glx_get_default_display -clutter_glx_get_default_screen -clutter_glx_get_root_window -clutter_glx_get_stage_visual -clutter_glx_get_stage_window -clutter_glx_set_stage_foreign -clutter_glx_trap_x_errors -clutter_glx_untrap_x_errors +clutter-x11 +X11 Specific Support +clutter_x11_get_default_display +clutter_x11_get_default_screen +clutter_x11_get_root_window +clutter_x11_get_stage_visual +clutter_x11_get_stage_window +clutter_x11_set_stage_foreign +clutter_x11_trap_x_errors +clutter_x11_untrap_x_errors -ClutterGLXFilterFunc -ClutterGLXFilterReturn -clutter_glx_add_filter -clutter_glx_remove_filter +ClutterX11FilterFunc +ClutterX11FilterReturn +clutter_x11_add_filter +clutter_x11_remove_filter
@@ -1192,6 +1203,7 @@ CLUTTER_IS_MODEL_CLASS CLUTTER_MODEL_GET_CLASS ClutterModelPrivate +clutter_model_get_type
@@ -1220,6 +1232,7 @@ CLUTTER_IS_MODEL_ITER_CLASS CLUTTER_MODEL_GET_CLASS ClutterModelIterPrivate +clutter_model_iter_get_type
diff --git a/tests/test-events.c b/tests/test-events.c index fbc6aaab1..ec35823be 100644 --- a/tests/test-events.c +++ b/tests/test-events.c @@ -183,7 +183,7 @@ main (int argc, char *argv[]) clutter_actor_set_size (actor, 100, 100); clutter_actor_set_position (actor, 100, 100); - clutter_actor_set_reactive (actor); + clutter_actor_set_reactive (actor, TRUE); clutter_container_add (CLUTTER_CONTAINER (stage), actor, NULL); @@ -200,7 +200,7 @@ main (int argc, char *argv[]) clutter_actor_set_size (actor, 100, 100); clutter_actor_set_position (actor, 250, 100); - clutter_actor_set_reactive (actor); + clutter_actor_set_reactive (actor, TRUE); clutter_container_add (CLUTTER_CONTAINER (stage), actor, NULL); @@ -214,7 +214,7 @@ main (int argc, char *argv[]) clutter_actor_set_size (actor, 100, 100); clutter_actor_set_position (actor, 400, 100); - clutter_actor_set_reactive (actor); + clutter_actor_set_reactive (actor, TRUE); clutter_container_add (CLUTTER_CONTAINER(stage), actor, NULL);