summaryrefslogtreecommitdiff
path: root/libdocument/ev-document.c
diff options
context:
space:
mode:
authorraveit65 <[email protected]>2016-06-23 12:20:40 +0200
committerraveit65 <[email protected]>2016-06-24 20:48:20 +0200
commitd0056f66f2d719eef718f3770dcbb6130a25101e (patch)
tree7f7859c7d8ddfaa1696195e3e795bd5a37af7573 /libdocument/ev-document.c
parenta89b45d36cae65743d7524682d3f79b55112dea0 (diff)
downloadatril-d0056f66f2d719eef718f3770dcbb6130a25101e.tar.bz2
atril-d0056f66f2d719eef718f3770dcbb6130a25101e.tar.xz
libdocument: Make EvSourceLink boxed.
https://bugzilla.gnome.org/show_bug.cgi?id=635705 taken from: https://git.gnome.org/browse/evince/commit/?id=0ac0898
Diffstat (limited to 'libdocument/ev-document.c')
-rw-r--r--libdocument/ev-document.c49
1 files changed, 45 insertions, 4 deletions
diff --git a/libdocument/ev-document.c b/libdocument/ev-document.c
index a929b3be..b3a6c62a 100644
--- a/libdocument/ev-document.c
+++ b/libdocument/ev-document.c
@@ -440,10 +440,9 @@ ev_document_synctex_backward_search (EvDocument *document,
filename = synctex_scanner_get_name (scanner, synctex_node_tag (node));
if (filename) {
- result = g_new (EvSourceLink, 1);
- result->filename = filename;
- result->line = synctex_node_line (node);
- result->col = synctex_node_column (node);
+ result = ev_source_link_new (filename,
+ synctex_node_line (node),
+ synctex_node_column (node));
}
}
}
@@ -732,6 +731,48 @@ ev_document_find_page_by_label (EvDocument *document,
return FALSE;
}
+/* EvSourceLink */
+G_DEFINE_BOXED_TYPE (EvSourceLink, ev_source_link, ev_source_link_copy, ev_source_link_free)
+
+EvSourceLink *
+ev_source_link_new (const gchar *filename,
+ gint line,
+ gint col)
+{
+ EvSourceLink *link = g_slice_new (EvSourceLink);
+
+ link->filename = g_strdup (filename);
+ link->line = line;
+ link->col = col;
+
+ return link;
+}
+
+EvSourceLink *
+ev_source_link_copy (EvSourceLink *link)
+{
+ EvSourceLink *copy;
+
+ g_return_val_if_fail (link != NULL, NULL);
+
+ copy = g_slice_new (EvSourceLink);
+
+ *copy = *link;
+ copy->filename = g_strdup (link->filename);
+
+ return copy;
+}
+
+void
+ev_source_link_free (EvSourceLink *link)
+{
+ if (link == NULL)
+ return;
+
+ g_free (link->filename);
+ g_slice_free (EvSourceLink, link);
+}
+
/* EvDocumentInfo */
G_DEFINE_BOXED_TYPE (EvDocumentInfo, ev_document_info, ev_document_info_copy, ev_document_info_free)