From bd8b09edda35a1531262add8b5429e7868949464 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Tue, 1 Mar 2011 18:36:08 +0000 Subject: [PATCH] constraint: Queue a relayout on :enabled changes ClutterConstraint should queue a relayout if the :enabled property of its parent class ClutterActorMeta changes. http://bugzilla.clutter-project.org/show_bug.cgi?id=2587 --- clutter/clutter-constraint.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/clutter/clutter-constraint.c b/clutter/clutter-constraint.c index 1b093d47b..92de2b025 100644 --- a/clutter/clutter-constraint.c +++ b/clutter/clutter-constraint.c @@ -137,6 +137,8 @@ #include "config.h" #endif +#include + #include "clutter-constraint.h" #include "clutter-actor.h" @@ -153,9 +155,30 @@ constraint_update_allocation (ClutterConstraint *constraint, { } +static void +clutter_constraint_notify (GObject *gobject, + GParamSpec *pspec) +{ + if (strcmp (pspec->name, "enabled") == 0) + { + ClutterActorMeta *meta = CLUTTER_ACTOR_META (gobject); + ClutterActor *actor = clutter_actor_meta_get_actor (meta); + + if (actor != NULL) + clutter_actor_queue_relayout (actor); + } + + if (G_OBJECT_CLASS (clutter_constraint_parent_class)->notify != NULL) + G_OBJECT_CLASS (clutter_constraint_parent_class)->notify (gobject, pspec); +} + static void clutter_constraint_class_init (ClutterConstraintClass *klass) { + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->notify = clutter_constraint_notify; + klass->update_allocation = constraint_update_allocation; }