summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoss Burton <rburton@src.gnome.org>2005-02-22 19:17:01 +0000
committerRoss Burton <rburton@src.gnome.org>2005-02-22 19:17:01 +0000
commitd8c4e434c01f05348cf58fc35b570f82cc71980e (patch)
treea498be3f586730a7bb23ac9fad6c9ebe8df664e2
parenta9e94540129ee12e30c200ac7f1c64b0e73de16d (diff)
downloadyelp-d8c4e434c01f05348cf58fc35b570f82cc71980e.tar.gz
Correctly handle XHTML documents
-rw-r--r--ChangeLog11
-rw-r--r--src/test-uri.c3
-rw-r--r--src/yelp-utils.c2
-rw-r--r--src/yelp-utils.h1
-rw-r--r--src/yelp-window.c13
5 files changed, 29 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 660a61ba..e9322268 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2005-02-22 Ross Burton <ross@burtonini.com>
+
+ * src/yelp-utils.h:
+ Add YELP_DOC_TYPE_XHTML.
+
+ * src/yelp-utils.c:
+ Handle application/xml+html as HTML.
+
+ * src/yelp-window.c:
+ Pass a MIME type to window_do_load_html.
+
2005-02-06 Kjartan Maraas <kmaraas@gnome.org>
* src/yelp-gecko-utils.cpp: Fix leak
diff --git a/src/test-uri.c b/src/test-uri.c
index 093908df..98b01b91 100644
--- a/src/test-uri.c
+++ b/src/test-uri.c
@@ -48,6 +48,9 @@ print_doc_info (YelpDocInfo *doc)
case YELP_DOC_TYPE_HTML:
type = "YELP_DOC_TYPE_HTML";
break;
+ case YELP_DOC_TYPE_XHTML:
+ type = "YELP_DOC_TYPE_XHTML";
+ break;
case YELP_DOC_TYPE_MAN:
type = "YELP_DOC_TYPE_MAN";
break;
diff --git a/src/yelp-utils.c b/src/yelp-utils.c
index 793101ea..00a85758 100644
--- a/src/yelp-utils.c
+++ b/src/yelp-utils.c
@@ -521,6 +521,8 @@ get_doc_type (gchar *uri)
type = YELP_DOC_TYPE_DOCBOOK_SGML;
else if (g_str_equal (mime_type, "text/html"))
type = YELP_DOC_TYPE_HTML;
+ else if (g_str_equal (mime_type, "application/xhtml+xml"))
+ type = YELP_DOC_TYPE_XHTML;
else
type = YELP_DOC_TYPE_EXTERNAL;
diff --git a/src/yelp-utils.h b/src/yelp-utils.h
index be3f4137..ae406ed5 100644
--- a/src/yelp-utils.h
+++ b/src/yelp-utils.h
@@ -33,6 +33,7 @@ typedef enum {
YELP_DOC_TYPE_DOCBOOK_XML,
YELP_DOC_TYPE_DOCBOOK_SGML,
YELP_DOC_TYPE_HTML,
+ YELP_DOC_TYPE_XHTML,
YELP_DOC_TYPE_MAN,
YELP_DOC_TYPE_INFO,
YELP_DOC_TYPE_TOC,
diff --git a/src/yelp-window.c b/src/yelp-window.c
index ad10ad65..8eb7141c 100644
--- a/src/yelp-window.c
+++ b/src/yelp-window.c
@@ -807,6 +807,7 @@ window_do_load (YelpWindow *window,
"the author of the document to convert to XML."));
break;
case YELP_DOC_TYPE_HTML:
+ case YELP_DOC_TYPE_XHTML:
handled = window_do_load_html (window, doc_info, frag_id);
break;
case YELP_DOC_TYPE_EXTERNAL:
@@ -1309,7 +1310,17 @@ window_do_load_html (YelpWindow *window,
}
yelp_html_set_base_uri (priv->html_view, uri);
- yelp_html_open_stream (priv->html_view, "text/html");
+
+ switch (yelp_doc_info_get_type (doc_info)) {
+ case YELP_DOC_TYPE_HTML:
+ yelp_html_open_stream (priv->html_view, "text/html");
+ break;
+ case YELP_DOC_TYPE_XHTML:
+ yelp_html_open_stream (priv->html_view, "application/xhtml+xml");
+ break;
+ default:
+ g_assert_not_reached ();
+ }
while ((result = gnome_vfs_read
(handle, buffer, BUFFER_SIZE, &n)) == GNOME_VFS_OK) {