[devhelp/gnome-2-28] Look for a local copy of URIs hosted on library.gnome.org (GNOME bug 598598)
- From: Frederic Peters <fpeters src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [devhelp/gnome-2-28] Look for a local copy of URIs hosted on library.gnome.org (GNOME bug 598598)
- Date: Mon, 19 Oct 2009 18:26:33 +0000 (UTC)
commit 5428a516a7f83d6a3d18ad281bbcddadc5866b74
Author: Frédéric Péters <fpeters 0d be>
Date: Fri Oct 16 12:09:26 2009 +0200
Look for a local copy of URIs hosted on library.gnome.org (GNOME bug 598598)
src/dh-window.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 47 insertions(+), 0 deletions(-)
---
diff --git a/src/dh-window.c b/src/dh-window.c
index c6ff219..4943ef2 100644
--- a/src/dh-window.c
+++ b/src/dh-window.c
@@ -913,6 +913,43 @@ window_populate (DhWindow *window)
window_open_new_tab (window, NULL, TRUE);
}
+
+static gchar*
+find_library_equivalent (DhWindow *window,
+ const gchar *uri)
+{
+ DhWindowPriv *priv;
+ gchar **components;
+ GList *iter;
+ DhLink *link;
+ gchar *book_id;
+ gchar *filename;
+ gchar *local_uri = NULL;
+
+ components = g_strsplit (uri, "/", 0);
+ book_id = components[4];
+ filename = components[6];
+
+ priv = window->priv;
+
+ for (iter = dh_base_get_keywords (priv->base); iter; iter = g_list_next (iter)) {
+ link = iter->data;
+ if (g_strcmp0 (dh_link_get_book_id (link), book_id) != 0) {
+ continue;
+ }
+ if (g_strcmp0 (dh_link_get_file_name (link), filename) != 0) {
+ continue;
+ }
+ local_uri = dh_link_get_uri (link);
+ break;
+ }
+
+ g_strfreev (components);
+
+ return local_uri;
+}
+
+
static gboolean
window_web_view_navigation_policy_decision_requested (WebKitWebView *web_view,
WebKitWebFrame *frame,
@@ -938,6 +975,16 @@ window_web_view_navigation_policy_decision_requested (WebKitWebView
return FALSE;
}
+ if (strncmp (uri, "http://library.gnome.org/devel/", 31) == 0) {
+ gchar *local_uri = find_library_equivalent (window, uri);
+ if (local_uri) {
+ webkit_web_policy_decision_ignore (policy_decision);
+ _dh_window_display_uri (window, local_uri);
+ g_free (local_uri);
+ return TRUE;
+ }
+ }
+
if (strncmp (uri, "file://", 7) != 0) {
webkit_web_policy_decision_ignore (policy_decision);
gtk_show_uri (NULL, uri, GDK_CURRENT_TIME, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]