首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLib信号连接适用于webkitgtk,但不适用于webkitgtk2。

GLib信号连接适用于webkitgtk,但不适用于webkitgtk2。
EN

Stack Overflow用户
提问于 2015-01-26 04:59:22
回答 1查看 300关注 0票数 0

我正在一个网页浏览器上寻找乐趣,并遇到了这个问题。

这样做是可行的:

代码语言:javascript
复制
#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");
}

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

代码语言:javascript
复制
#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 (例如。试图连接到对象没有的信号)。

有什么建议吗?令人惊讶的是,关于g_signal_connect的文档很少,来自glib。我所知道的都来自于一些gnome应用程序的源代码。

编辑:我发现在webkitgtk2情况下使用“Notific::progress”信号标识符,回调是有效的。但是,我不能使用webkit_web_view_get_progress()或webkit_web_view_get_estimated_load_progress()来读取进度值来显示它。

EN

回答 1

Stack Overflow用户

发布于 2015-01-26 07:46:04

这些症状非常奇怪,我只能想出一个解释:您仍然在链接webkit-gtk。使用这种简单的代码,您不会碰巧碰到链接问题,但是当然,新的信号也不会出现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28145018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档