summaryrefslogtreecommitdiff
path: root/clutter/clutter-constraint.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2014-12-14 14:30:50 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2014-12-16 00:37:06 +0000
commit391f1d8dd4323e825747fdab71a0d32303c7e343 (patch)
treee4c69b91c926eb8ff543895eaabb81d80c073abb /clutter/clutter-constraint.c
parent82fffaedb632bd7bf6a147d0fee41b8133cc6ad8 (diff)
downloadclutter-391f1d8dd4323e825747fdab71a0d32303c7e343.tar.gz
constraint: Add the ability to update the preferred size
Constraints can only update an existing allocation, which means they live only halfway through the layout management system used by Clutter; this limitation makes it impossible, for instance, to query the preferred size of an actor, if the actor is only using constraints to manage its own size.
Diffstat (limited to 'clutter/clutter-constraint.c')
-rw-r--r--clutter/clutter-constraint.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/clutter/clutter-constraint.c b/clutter/clutter-constraint.c
index be6dae8bc..61ad2aed2 100644
--- a/clutter/clutter-constraint.c
+++ b/clutter/clutter-constraint.c
@@ -152,6 +152,16 @@ constraint_update_allocation (ClutterConstraint *constraint,
}
static void
+constraint_update_preferred_size (ClutterConstraint *constraint,
+ ClutterActor *actor,
+ ClutterOrientation direction,
+ float for_size,
+ float *minimum_size,
+ float *natural_size)
+{
+}
+
+static void
clutter_constraint_notify (GObject *gobject,
GParamSpec *pspec)
{
@@ -176,6 +186,7 @@ clutter_constraint_class_init (ClutterConstraintClass *klass)
gobject_class->notify = clutter_constraint_notify;
klass->update_allocation = constraint_update_allocation;
+ klass->update_preferred_size = constraint_update_preferred_size;
}
static void
@@ -212,3 +223,21 @@ clutter_constraint_update_allocation (ClutterConstraint *constraint,
return clutter_actor_box_equal (allocation, &old_alloc);
}
+
+void
+clutter_constraint_update_preferred_size (ClutterConstraint *constraint,
+ ClutterActor *actor,
+ ClutterOrientation direction,
+ float for_size,
+ float *minimum_size,
+ float *natural_size)
+{
+ g_return_if_fail (CLUTTER_IS_CONSTRAINT (constraint));
+ g_return_if_fail (CLUTTER_IS_ACTOR (actor));
+
+ CLUTTER_CONSTRAINT_GET_CLASS (constraint)->update_preferred_size (constraint, actor,
+ direction,
+ for_size,
+ minimum_size,
+ natural_size);
+}