正如标题中所写的,我在使用Gtk 3.10 (在Ubuntu 14.04上)指定hbox/vbox内的子打包属性时遇到了麻烦,而Gtk 3.20 (在Archlinux上)也可以使用相同的代码。重现bug的最小代码如下(请原谅我的Haskell):
import Graphics.Widget -- my graphics library, which uses the FFI to import Gtk functions
main = runApplication $ do
a <- (subwidget.text) "aaa"; b <- (subwidget.text) "bbb"
setDynamic a (packing.expands) Fitting
c <- box2 Horizontal a b
window "Main window" c <| do visible =- True这段代码在两个Gtk版本中编译和运行,但是Gtk 3.10版本似乎忽略了第二行,并显示两个子小部件同等地扩展到hbox中。GTK3.20版本做了预期的事情,第一个小部件被打包到左边,第二个小部件占据了剩余的空间。除此之外,两个Gtk版本都没有报告错误。
你能告诉我是什么改变了吗?我已经看过文档了,但我还没有找到对这种行为的合理解释。
发布于 2016-05-04 16:45:14
不要紧,我的Haskell代码调用的是gtk_hbox_new,这在文档中被明确声明为已弃用。我切换到了gtk_box_new,现在两个版本的子小部件都可以正确布局了。
https://stackoverflow.com/questions/37006640
复制相似问题