-let jump rendering_window s =
- let uri = UriManager.uri_of_string s in
- rendering_window#show () ;
- rendering_window#prevb#misc#set_sensitive true ;
- rendering_window#nextb#misc#set_sensitive false ;
- visited_uris := uri::!visited_uris ;
- to_visit_uris := [] ;
- annotated_obj := None ;
- update_output rendering_window uri
+let jump rendering_window node =
+ let module M = Minidom in
+ let s =
+ match M.node_get_attribute node (M.mDOMString_of_string "href") with
+ None -> assert false
+ | Some s -> M.string_of_mDOMString s
+ in
+ let uri = UriManager.uri_of_string s in
+ rendering_window#show () ;
+ rendering_window#prevb#misc#set_sensitive true ;
+ rendering_window#nextb#misc#set_sensitive false ;
+ visited_uris := uri::!visited_uris ;
+ to_visit_uris := [] ;
+ annotated_obj := None ;
+ update_output rendering_window uri
+;;
+
+let choose_selection rendering_window node =
+ let module M = Minidom in
+ let rec aux ~first_time node =
+ match M.node_get_attribute node (M.mDOMString_of_string "xref") with
+ None ->
+ let parent =
+ match M.node_get_parent node with
+ None -> assert false
+ | Some parent -> parent
+ in
+ aux ~first_time:false parent
+ | Some s ->
+ if not first_time then
+ rendering_window#output#set_selection (Some node)
+ in
+ match node with
+ None -> () (* No element selected *)
+ | Some node -> aux ~first_time:true node