我正在编写一个修改现有 UI 的插件。我想做的一件事是更改现有菜单项的功能。
这都是使用Gtk库。
菜单项( GtkItem
)是从 GtkItemFactoryEntry
创建的(这是我无法控制的),并且其当前行为由 the callback in the GtkItemFactoryEntry
定义。 。
我可以使用 gtk_item_factory_get_widget()
来处理菜单项
并使用 gtk_signal_connect()
将进一步的操作附加到菜单项,但我似乎无法使用 gtk_signal_disconnect()
断开原始回调或gtk_signal_disconnect_by_func()
.
有什么办法可以删除或替换原来的回调吗?
最佳答案
所以我想出的办法是,因为信号处理程序是由一个向上的计数器标识的,并且我得到了一个我想用gtk_signal_connect()附加的回调的处理程序ID
对每个处理程序 ID 运行 gtk_signal_disconnect()
(从零到比我的新处理程序 ID 小一)。
虽然很丑,但是很管用。而且由于该元素上没有悬挂其他信号,因此不会破坏任何东西。
关于c - 替换从 GtkItemFactoryEntry 创建的 GtkItem 的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2518584/