diff options
author | raveit65 <[email protected]> | 2016-06-23 12:20:40 +0200 |
---|---|---|
committer | raveit65 <[email protected]> | 2016-06-24 20:48:20 +0200 |
commit | d0056f66f2d719eef718f3770dcbb6130a25101e (patch) | |
tree | 7f7859c7d8ddfaa1696195e3e795bd5a37af7573 /libdocument/ev-document.c | |
parent | a89b45d36cae65743d7524682d3f79b55112dea0 (diff) | |
download | atril-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.c | 49 |
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) |