如何追踪在哪个应用程序中为某个按钮定义了信号处理程序 gtk/gtkmm

How to track down in which application is signal handler defined gtk/gtkmm for some button

问题: 你想为某个 gnome/gtk/gtkmm 项目做出贡献,因为你已经注意到并知道可以使事情变得更好的方法/你想修复一些错误。以下是帮助您入门的步骤。

示例问题: "Clean" Gnome Builder 中的按钮对我的项目没有任何作用,因为此时我认为它只是带有占位符按钮的空函数,我想实现实际操作。

步骤如下:

  1. 在设置了环境GTK_DEBUG=交互式环境变量的终端中打开您想要修改的应用程序。所以 运行 GTK_DEBUG=interactive gnome-builder
  2. Gtk 检查器应该已经打开,您应该会看到显示了一堆对象。如果您在检查器中单击对象,该对象应该会在您的应用程序中亮起
  3. Gtk层次分明,所以parent包含child,你的工作是检测哪个parent是你要修改的child
  4. 当您确定要选择哪个父级时,单击该父级名称旁边的箭头以显示其子级
  5. 通过应用 2. 重复步骤 3. 和 4. 以找到您要修改的子项
  6. 例如我的路径是IdePrimaryWorkspace -> GtkPopover -> GtkBox -> DzlPriorityBox -> GbpBuilduiOmniBarSection -> GtkBox -> GtkBox -> GtkButton
    1. 双击最后一个 interactive 条目(例如 GtkButton
    2. 在左侧,在下拉菜单中切换到属性视图
    3. 找到你想要的属性,我的是GtkActionable,它的值是builder-manager.clean
    4. 您感兴趣的应用程序终端中的开源文件夹(该应用程序的克隆源)
    5. 输入命令tree | grep build-manager
    6. 如果在 find 中有具有该文件名类型的条目。 --name=filenameof.your.file
    7. 获取文件路径,以文本形式打开该文件 editor/IDE,更改其中的内容
    8. 提交补丁