Haskell 自动调整容器的子元素大小(为什么不推荐使用容器\u resize\u子元素)

Haskell 自动调整容器的子元素大小(为什么不推荐使用容器\u resize\u子元素),haskell,gtk,gtk3,deprecation-warning,Haskell,Gtk,Gtk3,Deprecation Warning,我正在编写一个系统托盘,其大小在运行时确定(并且可能由于调整大小而改变),我希望调整托盘图标的大小,以便它们扩展到放置它们的容器对象的大小 实际上,我已经通过以下方式实现了这一点:注册gtk_图像小部件的大小分配信号,并为其分配一个pixbuf,其大小与在提供的回调函数中分配给该图像小部件的高度相匹配 这种方法的唯一问题是,这似乎不会触发图像小部件的调整大小(即使我显式地调用小部件\u set\u size\u request),这导致了这个问题:调用小部件\u queue\u draw或小部件

我正在编写一个系统托盘,其大小在运行时确定(并且可能由于调整大小而改变),我希望调整托盘图标的大小,以便它们扩展到放置它们的容器对象的大小

实际上,我已经通过以下方式实现了这一点:注册gtk_图像小部件的大小分配信号,并为其分配一个pixbuf,其大小与在提供的回调函数中分配给该图像小部件的高度相匹配

这种方法的唯一问题是,这似乎不会触发图像小部件的调整大小(即使我显式地调用小部件\u set\u size\u request),这导致了这个问题:调用小部件\u queue\u draw或小部件\u queue\u resize来调整图像和包含框的大小并不能改善这个问题,但是调用不推荐使用的函数
gtk\u container\u resize\u children
可以解决问题:

我的问题是

  • 为什么gtk_容器_调整大小_子项不受欢迎
  • 我的方法是仅在接收到声音大小分配信号时为图像实际设置pixbuf,还是有更好的方法
  • 为什么widget\u queue\u在这里也不工作
您可以在这里找到有问题的实际代码,但它是用haskell编写的,因此如果您不熟悉该语言,可能很难理解:

看看,似乎您应该能够将其替换为对和的调用,GTK+3中不推荐使用这两种调用