bind-constraint: Use ::queue-relayout
Instead of using the allocation-changed signal, use the queue-relayout signal on the source to queue a relayout on the actor to which the BindConstraint has been attached to. The ::allocation-changed signal is not always enough, given that a BindConstraint can use the position as well as the size of an actor to drive the allocation of another; in this regard, it's much similar to a ClutterClone, which requires a notification on every change, even potential, and not just real ones, given the short-circuiting done inside ClutterActor.
This commit is contained in:
parent
5c82b2551c
commit
4e724aed46
@ -130,9 +130,7 @@ G_DEFINE_TYPE (ClutterBindConstraint,
|
|||||||
CLUTTER_TYPE_CONSTRAINT);
|
CLUTTER_TYPE_CONSTRAINT);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
source_allocation_changed (ClutterActor *source,
|
source_queue_relayout (ClutterActor *source,
|
||||||
const ClutterActorBox *allocation,
|
|
||||||
ClutterAllocationFlags flags,
|
|
||||||
ClutterBindConstraint *bind)
|
ClutterBindConstraint *bind)
|
||||||
{
|
{
|
||||||
if (bind->actor != NULL)
|
if (bind->actor != NULL)
|
||||||
@ -392,15 +390,15 @@ clutter_bind_constraint_set_source (ClutterBindConstraint *constraint,
|
|||||||
G_CALLBACK (source_destroyed),
|
G_CALLBACK (source_destroyed),
|
||||||
constraint);
|
constraint);
|
||||||
g_signal_handlers_disconnect_by_func (old_source,
|
g_signal_handlers_disconnect_by_func (old_source,
|
||||||
G_CALLBACK (source_allocation_changed),
|
G_CALLBACK (source_queue_relayout),
|
||||||
constraint);
|
constraint);
|
||||||
}
|
}
|
||||||
|
|
||||||
constraint->source = source;
|
constraint->source = source;
|
||||||
if (constraint->source != NULL)
|
if (constraint->source != NULL)
|
||||||
{
|
{
|
||||||
g_signal_connect (constraint->source, "allocation-changed",
|
g_signal_connect (constraint->source, "queue-relayout",
|
||||||
G_CALLBACK (source_allocation_changed),
|
G_CALLBACK (source_queue_relayout),
|
||||||
constraint);
|
constraint);
|
||||||
g_signal_connect (constraint->source, "destroy",
|
g_signal_connect (constraint->source, "destroy",
|
||||||
G_CALLBACK (source_destroyed),
|
G_CALLBACK (source_destroyed),
|
||||||
|
Loading…
Reference in New Issue
Block a user