summaryrefslogtreecommitdiff
path: root/src/yelp-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/yelp-window.c')
-rw-r--r--src/yelp-window.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/yelp-window.c b/src/yelp-window.c
index b5aff6cc..b2ae6bd8 100644
--- a/src/yelp-window.c
+++ b/src/yelp-window.c
@@ -2352,6 +2352,7 @@ window_enable_cursor_cb (GtkAction *action, YelpWindow *window)
static void
history_load_entry (YelpWindow *window, YelpHistoryEntry *entry)
{
+ gchar *slash, *frag_id;
g_return_if_fail (YELP_IS_WINDOW (window));
if (entry->type == YELP_RRN_TYPE_HTML || entry->type == YELP_RRN_TYPE_XHTML || entry->type == YELP_RRN_TYPE_TEXT) {
@@ -2364,10 +2365,21 @@ history_load_entry (YelpWindow *window, YelpHistoryEntry *entry)
g_free (window->priv->base_uri);
window->priv->base_uri = g_strdup (entry->base_uri);
window->priv->current_document = entry->doc;
+
+ /* FIXME: Super hacky. We want the part before the slash for mallard IDs,
+ because right now we're outputting "#page_id/section_id". We ought to
+ be scrolling to the section as well.
+ */
+ slash = strchr (entry->frag_id, '/');
+ if (slash)
+ frag_id = g_strndup (entry->frag_id, slash - entry->frag_id);
+ else
+ frag_id = g_strdup (entry->frag_id);
window->priv->current_request = yelp_document_get_page (entry->doc,
- entry->frag_id,
- (YelpDocumentFunc) page_request_cb,
- (void *) window);
+ frag_id,
+ (YelpDocumentFunc) page_request_cb,
+ (void *) window);
+ g_free (frag_id);
}
}