]> www.fi.muni.cz Git - evince.git/commitdiff
[libdocument] Add methods to get page and page label from a link
authorCarlos Garcia Campos <carlosgc@gnome.org>
Thu, 2 Sep 2010 16:09:09 +0000 (18:09 +0200)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Thu, 2 Sep 2010 16:16:29 +0000 (18:16 +0200)
It works even for named destinations, using the existing methods to get
pages and page label from a destination.

libdocument/ev-document-links.c
libdocument/ev-document-links.h

index b8aae5d71a5ac424671c6336e4b5567276350e89..48dde7fcdf2aa17acdfde78bf92c4d536a8ffc6c 100644 (file)
@@ -127,3 +127,41 @@ ev_document_links_get_dest_page_label (EvDocumentLinks *document_links,
 
        return label;
 }
+
+static EvLinkDest *
+get_link_dest (EvLink *link)
+{
+       EvLinkAction *action;
+
+       action = ev_link_get_action (link);
+       if (!action)
+               return NULL;
+
+       if (ev_link_action_get_action_type (action) !=
+           EV_LINK_ACTION_TYPE_GOTO_DEST)
+               return NULL;
+
+       return ev_link_action_get_dest (action);
+}
+
+gint
+ev_document_links_get_link_page (EvDocumentLinks *document_links,
+                                EvLink          *link)
+{
+       EvLinkDest *dest;
+
+       dest = get_link_dest (link);
+
+       return dest ? ev_document_links_get_dest_page (document_links, dest) : -1;
+}
+
+gchar *
+ev_document_links_get_link_page_label (EvDocumentLinks *document_links,
+                                      EvLink          *link)
+{
+       EvLinkDest *dest;
+
+       dest = get_link_dest (link);
+
+       return dest ? ev_document_links_get_dest_page_label (document_links, dest) : NULL;
+}
index 36148403a420f5a4197fa4d34c3d365c7bb2e070..1c507e718d9ebc6e44b813b176de2f992b6f9839 100644 (file)
@@ -81,6 +81,10 @@ gint           ev_document_links_get_dest_page       (EvDocumentLinks *document_
                                                      EvLinkDest      *dest);
 gchar         *ev_document_links_get_dest_page_label (EvDocumentLinks *document_links,
                                                      EvLinkDest      *dest);
+gint           ev_document_links_get_link_page       (EvDocumentLinks *document_links,
+                                                     EvLink          *link);
+gchar         *ev_document_links_get_link_page_label (EvDocumentLinks *document_links,
+                                                     EvLink          *link);
 
 G_END_DECLS