我正在处理一个旧的 Motif 应用程序,它需要加载和显示一长串条目(大约 1500 个)。它通过 XtVaCreateManagedWidget()
创建和管理 xmFormWidgetClass
实例,然后用一堆线性层次结构填充它 xmFrameWidgetClass->xmFormWidgetClass->xmFormWidgetClass->xmPushButtonWidgetClass
。每个 PushButton
都包含一个多行标签。当这个东西被填充时,它会占用大量的 CPU,它会在 X/Motif 库中进行一些几何计算。添加新按钮的速度非常快。看起来 XtVaCreateManagedWidget()
内部使用了 O(N) 算法。
如果我在 xmFormWidgetClass
的原始实例上执行 XtUnrealizeWidget()
,事情就会好得多。条目正在以几乎恒定的速度添加,但后来我找不到一种方法来显示我构建的整个东西。 xmFormWidgetClass
的原始实例的 XtRealizeWidget()
不会在窗口中呈现它。
我做错了什么?有没有办法填充层次结构,然后计算几何图形并立即将其渲染到屏幕上?
重新设计应用程序是一种选择,但它是一种不得已的选择。
任何让我留在 Motif 库中的建议都将不胜感激!
问候, /谢尔盖
最佳答案
尝试在 XtRealizeWidget
之后调用 XtManageChild
。
关于linux - 在 Motif 中构建长滚动按钮小部件列表的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6713864/