+ if (reason == WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) {
+ const gchar *uri;
+ gboolean result;
+
+ webkit_web_policy_decision_ignore (policy_decision);
+ uri = webkit_network_request_get_uri (WEBKIT_NETWORK_REQUEST (request));
+ g_signal_emit_by_name (G_OBJECT (user_data), "activate-link", uri, &result);
+
+ return TRUE;
+ } else if (reason != WEBKIT_WEB_NAVIGATION_REASON_OTHER) {
+ webkit_web_policy_decision_ignore (policy_decision);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static gboolean
+on_new_window_policy_decision_requested (WebKitWebView *web_view,
+ WebKitWebFrame *frame,
+ WebKitNetworkRequest *request,
+ WebKitWebNavigationAction *navigation_action,
+ WebKitWebPolicyDecision *policy_decision,
+ gpointer user_data)
+{
+ WebKitWebNavigationReason reason;
+ reason = webkit_web_navigation_action_get_reason (navigation_action);
+ if (reason == WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) {
+ const gchar *uri;
+ gboolean result;
+
+ webkit_web_policy_decision_ignore (policy_decision);
+ uri = webkit_network_request_get_uri (WEBKIT_NETWORK_REQUEST (request));
+ g_signal_emit_by_name (G_OBJECT (user_data), "activate-link", uri, &result);
+
+ return TRUE;
+ } else if (reason != WEBKIT_WEB_NAVIGATION_REASON_OTHER) {