#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);
}
{
webkit_web_view_load_string(view, str, NULL, "UTF-8", "file://");
}
+
+void webbrowser_init(GtkStatusbar *status)
+{
+ w_status = status;
+}