GLib信号连接可与webkitgtk一起工作,但不能与webkitgtk2一起工作

GLib信号连接可与webkitgtk一起工作,但不能与webkitgtk2一起工作,gtk,webkitgtk,Gtk,Webkitgtk,为了好玩,我正在开发一款网络浏览器,但遇到了这个问题 这项工作: #include <webkit/webkit.h> void init() { GtkWidget *web_view = webkit_web_view_new(); g_signal_connect( G_OBJECT(GTK_WIDGET(this->web_view)), "notify::progress", G_CALLBACK(LoadChan

为了好玩,我正在开发一款网络浏览器,但遇到了这个问题

这项工作:

#include <webkit/webkit.h>

void init() {
    GtkWidget *web_view = webkit_web_view_new();
    g_signal_connect(
      G_OBJECT(GTK_WIDGET(this->web_view)),
      "notify::progress",
      G_CALLBACK(LoadChangedProxy),
      NULL);
    webkit_web_view_load_uri(WEBKIT_WEB_VIEW(this->web_view), "http://google.com");
}

void LoadChangedProxy(GtkWidget *view, GParamSpec *pspec, gpointer p) {
   puts("LOADING");
}
#包括
void init(){
GtkWidget*web_view=webkit_web_view_new();
g_信号_连接(
G_对象(GTK_小部件(此->web_视图)),
“通知::进度”,
G_回调(LoadChangedProxy),
无效);
webkit\u web\u视图\u加载\u uri(webkit\u web\u视图(此->web\u视图),”http://google.com");
}
void LoadChangedProxy(GtkWidget*视图、GParamSpec*pspec、gpointer p){
看跌期权(“装货”);
}
在这种情况下,永远不会调用回调:

#include <webkit2/webkit2.h>

void init() {
    GtkWidget *web_view = webkit_web_view_new();
    g_signal_connect(
      G_OBJECT(GTK_WIDGET(this->web_view)),
      "notify::estimated-load-progress",
      G_CALLBACK(LoadChangedProxy),
      NULL);
    webkit_web_view_load_uri(WEBKIT_WEB_VIEW(this->web_view), "http://google.com");
}

void LoadChangedProxy(GtkWidget *view, GParamSpec *pspec, gpointer p) {
   puts("LOADING");
}
#包括
void init(){
GtkWidget*web_view=webkit_web_view_new();
g_信号_连接(
G_对象(GTK_小部件(此->web_视图)),
“通知::估计的加载进度”,
G_回调(LoadChangedProxy),
无效);
webkit\u web\u视图\u加载\u uri(webkit\u web\u视图(此->web\u视图),”http://google.com");
}
void LoadChangedProxy(GtkWidget*视图、GParamSpec*pspec、gpointer p){
看跌期权(“装货”);
}
起初我试图使用webkitgtk2,结果我的头撞到了墙上。我切换到旧的webkitgtk1头和api,它神奇地开始工作。我不知道这是什么原因造成的,此外,没有错误被打印到stderr或stdout(例如,试图连接到一个对象没有的信号)

有什么建议吗?令人惊讶的是,glib几乎没有关于g_信号连接的文档。我所知道的一切都来自于一些gnome应用程序的源代码

编辑:
我发现在webkitgtk2案例中使用“notify::progress”信号标识符,回调可以工作。但是,我无法使用webkit\u web\u view\u get\u progress()或webkit\u web\u view\u get\u estimated\u load\u progress()读取进度值来显示它。

症状非常奇怪,我只能想到一个解释:您仍然在链接webkit gtk。对于这样的琐碎代码,您不会碰巧遇到链接问题,但新信号当然也不会出现。

但是如果
估计的加载进度
属性不存在,GLib会不会在运行时说出这样的错误@帕波达卡:你在stderr上看到这样的警告了吗?@andlabs,如果信号不存在,就会出现这种情况,但我认为对于未知的信号细节不会有警告。@kju谢谢;陛下我想知道在GLib的未来版本中是否应该改变这一点(特别是这里的
notify
;我从未构建过带有细节的定制信号,因此IDK是否可以扩展到其他信号):/