[yelp/yelp-3-0] [yelp-view] Handle link clicks for xref links



commit 7d206e20e8f252426525313c9f0cf3441e84f1e6
Author: Shaun McCance <shaunm gnome org>
Date:   Mon Oct 19 11:57:46 2009 -0500

    [yelp-view] Handle link clicks for xref links

 libyelp/yelp-view.c |   33 +++++++++++++++++++++++++++++++++
 1 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/libyelp/yelp-view.c b/libyelp/yelp-view.c
index e56b0d6..1410cc7 100644
--- a/libyelp/yelp-view.c
+++ b/libyelp/yelp-view.c
@@ -47,6 +47,13 @@ static void        yelp_view_set_property         (GObject            *object,
                                                    const GValue       *value,
                                                    GParamSpec         *pspec);
 
+static gboolean    view_navigation_requested      (WebKitWebView             *view,
+                                                   WebKitWebFrame            *frame,
+                                                   WebKitNetworkRequest      *request,
+                                                   WebKitWebNavigationAction *action,
+                                                   WebKitWebPolicyDecision   *decision,
+                                                   gpointer                   user_data);
+
 static void        view_clear_load                (YelpView           *view);
 static void        view_load_page                 (YelpView           *view);
 static void        view_show_error_page           (YelpView           *view,
@@ -96,6 +103,9 @@ yelp_view_init (YelpView *view)
     priv->cancellable = NULL;
 
     priv->state = YELP_VIEW_STATE_BLANK;
+
+    g_signal_connect (view, "navigation-policy-decision-requested",
+                      G_CALLBACK (view_navigation_requested), NULL);
 }
 
 static void
@@ -258,6 +268,29 @@ yelp_view_load_document (YelpView     *view,
 
 /******************************************************************************/
 
+static gboolean
+view_navigation_requested (WebKitWebView             *view,
+                           WebKitWebFrame            *frame,
+                           WebKitNetworkRequest      *request,
+                           WebKitWebNavigationAction *action,
+                           WebKitWebPolicyDecision   *decision,
+                           gpointer                   user_data)
+{
+    YelpViewPrivate *priv = GET_PRIV (view);
+    YelpUri *uri;
+
+    debug_print (DB_FUNCTION, "entering\n");
+
+    uri = yelp_uri_new_relative (priv->uri,
+                                 webkit_network_request_get_uri (request));
+
+    webkit_web_policy_decision_ignore (decision);
+
+    yelp_view_load_uri ((YelpView *) view, uri);
+
+    return TRUE;
+}
+
 static void
 view_clear_load (YelpView *view)
 {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]