X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fwebbrowser.c;h=829ceee4760c1fcb31c177a21f4e8ad425b536c8;hb=refs%2Fheads%2Fmaster;hp=13de067afb34d05d13625c80ddcd2517b0746ab4;hpb=badeb9cfbaa75161217106546ee34493b0e541f1;p=prss.git diff --git a/src/webbrowser.c b/src/webbrowser.c index 13de067..829ceee 100644 --- a/src/webbrowser.c +++ b/src/webbrowser.c @@ -22,16 +22,59 @@ #include "webbrowser.h" static WebKitWebView *view; +static GtkStatusbar *w_status; + +static gboolean new_window_requested_cbk(WebKitWebView *view, + WebKitWebFrame *frame, + WebKitNetworkRequest *rq, + WebKitWebNavigationAction *action, + WebKitWebPolicyDecision *decision) +{ + webkit_web_view_load_uri(view, webkit_network_request_get_uri(rq)); + + webkit_web_policy_decision_ignore(decision); + + return TRUE; +} + +static void hovering_over_link_cbk(WebKitWebView *web_view, + gchar *title, + gchar *uri, + gpointer user_data) +{ + guint id; + + id = gtk_statusbar_get_context_id(w_status, "info"); + + if (uri) + gtk_statusbar_push(w_status, id, uri); + else + gtk_statusbar_remove_all(w_status, id); +} GtkWidget *web_get_widget() { - if (!view) + if (!view) { view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_signal_connect(view, + "new-window-policy-decision-requested", + G_CALLBACK(new_window_requested_cbk), + view); + g_signal_connect(view, + "hovering-over-link", + G_CALLBACK(hovering_over_link_cbk), + NULL); + } return GTK_WIDGET(view); } void web_load(const char *str) { - webkit_web_view_load_string(view, str, NULL, "UTF-8", "file://"); + webkit_web_view_load_string(view, str, NULL, "UTF-8", ""); +} + +void webbrowser_init(GtkStatusbar *status) +{ + w_status = status; }