GLib信号连接可与webkitgtk配合使用,但不适用于webkitgtk2

时间:2015-01-26 04:59:23

标签: 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(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");
}

在这种情况下,永远不会调用回调:

#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");
}

我最初尝试使用webkitgtk2并且真的碰到了我的头。我切换到较旧的webkitgtk1标头和api,它神奇地开始工作。我不知道是什么会导致这种情况,另外没有错误打印到stderr或stdout(例如,尝试连接到对象没有的信号)。

有任何建议吗? gib上g_signal_connect的文档很少令人惊讶。我所知道的只是看一些gnome应用程序源代码。

修改 我发现在webkitgtk2案例中使用“notify :: progress”信号标识符,回调有效。但是,我不能使用webkit_web_view_get_progress()或webkit_web_view_get_estimated_load_progress()来读取进度值以显示它。

1 个答案:

答案 0 :(得分:0)

症状很奇怪,我只能想到一个解释:你仍在使用webkit-gtk链接。像这样的琐碎代码你没有遇到链接问题,但当然新信号也不存在。

相关问题