static gchar * ev_page_accessible_get_selection (AtkText *text, gint selection_num, gint *start_pos, gint *end_pos) { EvPageAccessible *self = EV_PAGE_ACCESSIBLE (text); EvView *view = ev_page_accessible_get_view (self); gchar *selected_text = NULL; gchar *normalized_text = NULL; GList *l; *start_pos = -1; *end_pos = -1; if (selection_num != 0) return NULL; if (!EV_IS_SELECTION (view->document) || !view->selection_info.selections) return NULL; for (l = view->selection_info.selections; l != NULL; l = l->next) { EvViewSelection *selection = (EvViewSelection *)l->data; gint start, end; if (selection->page != self->priv->page) continue; if (get_selection_bounds (view, selection, &start, &end) && start != end) { EvPage *page; page = ev_document_get_page (view->document, selection->page); ev_document_doc_mutex_lock (); selected_text = ev_selection_get_selected_text (EV_SELECTION (view->document), page, selection->style, &(selection->rect)); ev_document_doc_mutex_unlock (); g_object_unref (page); *start_pos = start; *end_pos = end; } break; } if (selected_text) { normalized_text = g_utf8_normalize (selected_text, -1, G_NORMALIZE_NFKC); g_free (selected_text); } return normalized_text; }
gint ev_document_links_find_link_page (EvDocumentLinks *document_links, const gchar *link_name) { EvDocumentLinksInterface *iface = EV_DOCUMENT_LINKS_GET_IFACE (document_links); gint retval; ev_document_doc_mutex_lock (); retval = iface->find_link_page (document_links, link_name); ev_document_doc_mutex_unlock (); return retval; }