actor: Add ClutterActorIter.destroy()
Similar to the clutter_actor_iter_remove(), but it'll call destroy() instead of remove_child(). We can also reimplement the ::destroy default handler using it, and make it more compact.
This commit is contained in:
parent
59bb19a449
commit
d0e945fb70
@ -4758,15 +4758,10 @@ static void
|
|||||||
clutter_actor_real_destroy (ClutterActor *actor)
|
clutter_actor_real_destroy (ClutterActor *actor)
|
||||||
{
|
{
|
||||||
ClutterActorIter iter;
|
ClutterActorIter iter;
|
||||||
ClutterActor *child;
|
|
||||||
|
|
||||||
clutter_actor_iter_init (&iter, actor);
|
clutter_actor_iter_init (&iter, actor);
|
||||||
while (clutter_actor_iter_next (&iter, &child))
|
while (clutter_actor_iter_next (&iter, NULL))
|
||||||
{
|
clutter_actor_iter_destroy (&iter);
|
||||||
g_object_ref (child);
|
|
||||||
clutter_actor_iter_remove (&iter);
|
|
||||||
clutter_actor_destroy (child);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GObject *
|
static GObject *
|
||||||
@ -15739,3 +15734,43 @@ clutter_actor_iter_remove (ClutterActorIter *iter)
|
|||||||
ri->age += 1;
|
ri->age += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_actor_iter_destroy:
|
||||||
|
* @iter: a #ClutterActorIter
|
||||||
|
*
|
||||||
|
* Safely destroys the #ClutterActor currently pointer to by the iterator
|
||||||
|
* from its parent.
|
||||||
|
*
|
||||||
|
* This function can only be called after clutter_actor_iter_next() or
|
||||||
|
* clutter_actor_iter_prev() returned %TRUE, and cannot be called more
|
||||||
|
* than once for the same actor.
|
||||||
|
*
|
||||||
|
* This function will call clutter_actor_destroy() internally.
|
||||||
|
*
|
||||||
|
* Since: 1.10
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_actor_iter_destroy (ClutterActorIter *iter)
|
||||||
|
{
|
||||||
|
RealActorIter *ri = (RealActorIter *) iter;
|
||||||
|
ClutterActor *cur;
|
||||||
|
|
||||||
|
g_return_if_fail (iter != NULL);
|
||||||
|
g_return_if_fail (ri->root != NULL);
|
||||||
|
#ifndef G_DISABLE_ASSERT
|
||||||
|
g_return_if_fail (ri->age == ri->root->priv->age);
|
||||||
|
#endif
|
||||||
|
g_return_if_fail (ri->current != NULL);
|
||||||
|
|
||||||
|
cur = ri->current;
|
||||||
|
|
||||||
|
if (cur != NULL)
|
||||||
|
{
|
||||||
|
ri->current = cur->priv->prev_sibling;
|
||||||
|
|
||||||
|
clutter_actor_destroy (cur);
|
||||||
|
|
||||||
|
ri->age += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -521,6 +521,7 @@ gboolean clutter_actor_iter_next
|
|||||||
gboolean clutter_actor_iter_prev (ClutterActorIter *iter,
|
gboolean clutter_actor_iter_prev (ClutterActorIter *iter,
|
||||||
ClutterActor **child);
|
ClutterActor **child);
|
||||||
void clutter_actor_iter_remove (ClutterActorIter *iter);
|
void clutter_actor_iter_remove (ClutterActorIter *iter);
|
||||||
|
void clutter_actor_iter_destroy (ClutterActorIter *iter);
|
||||||
|
|
||||||
/* Transformations */
|
/* Transformations */
|
||||||
gboolean clutter_actor_is_rotated (ClutterActor *self);
|
gboolean clutter_actor_is_rotated (ClutterActor *self);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user