X-Git-Url: https://git.wpitchoune.net/gitweb/?p=prss.git;a=blobdiff_plain;f=src%2Fwebbrowser.c;h=4f77fed794f8a4d76791cfcf0a442b3b51970c36;hp=13de067afb34d05d13625c80ddcd2517b0746ab4;hb=2ea30ab741b8b4876bdce2e8dc0772b07cbdcf88;hpb=badeb9cfbaa75161217106546ee34493b0e541f1 diff --git a/src/webbrowser.c b/src/webbrowser.c index 13de067..4f77fed 100644 --- a/src/webbrowser.c +++ b/src/webbrowser.c @@ -22,11 +22,49 @@ #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_pop(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); } @@ -35,3 +73,8 @@ void web_load(const char *str) { webkit_web_view_load_string(view, str, NULL, "UTF-8", "file://"); } + +void webbrowser_init(GtkStatusbar *status) +{ + w_status = status; +}