处理分配更改回调中的警告

时间:2012-06-21 08:20:45

标签: c++ c user-interface gtk3 clutter

我有一个Clutter警告我无法摆脱。

在我的项目中,我有一个自定义布局,由几个ClutterConstraint构建,它处理几个ClutterBox。

其中一个ClutterBox包含许多ClutterTexture,放置在手工布局中。 为了获得(手工布局),我使用g_signal_connect来连接“分配更改”通知,并在他的回调中写下了所有放置逻辑。

运行时出现的警告是"Clutter-WARNING **: The actor 'ClutterBox' is currently inside an allocation cycle; calling clutter_actor_queue_relayout() is not recommended"

有人可以建议我如何避免这种警告吗?

1 个答案:

答案 0 :(得分:1)

在通过分配更改的信号分配其父级期间,您无法更改子级的分配 - 即,您不能在分配()虚拟函数之外的父级分配期间更改子级的大小或位置。 / p>

如果要为容器实现布局管理策略,则必须对容器进行子类化并覆盖其allocate()虚函数;或者,您应该实现ClutterLayoutManager,并将其分配给actor。

ClutterBox在Clutter 1.10中也已被弃用:ClutterActor现在为实现布局管理策略所需的代表提供了完整的API和支持。