summaryrefslogtreecommitdiff
path: root/libdocument
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
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')
-rw-r--r--libdocument/ev-document.c49
-rw-r--r--libdocument/ev-document.h24
2 files changed, 62 insertions, 11 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)
diff --git a/libdocument/ev-document.h b/libdocument/ev-document.h
index 1089d79c..6c492da8 100644
--- a/libdocument/ev-document.h
+++ b/libdocument/ev-document.h
@@ -66,20 +66,15 @@ typedef struct {
typedef struct _EvRectangle EvRectangle;
typedef struct _EvMapping EvMapping;
-
+typedef struct _EvSourceLink EvSourceLink;
typedef struct _EvDocumentBackendInfo EvDocumentBackendInfo;
+
struct _EvDocumentBackendInfo
{
const gchar *name;
const gchar *version;
};
-typedef struct {
- const gchar *filename;
- gint line;
- gint col;
-} EvSourceLink;
-
struct _EvDocument
{
GObject base;
@@ -209,6 +204,21 @@ struct _EvMapping {
gpointer data;
};
+#define EV_TYPE_SOURCE_LINK (ev_source_link_get_type ())
+struct _EvSourceLink
+{
+ gchar *filename;
+ gint line;
+ gint col;
+};
+
+GType ev_source_link_get_type (void) G_GNUC_CONST;
+EvSourceLink *ev_source_link_new (const gchar *filename,
+ gint line,
+ gint col);
+EvSourceLink *ev_source_link_copy (EvSourceLink *link);
+void ev_source_link_free (EvSourceLink *link);
+
/* convenience macro to ease interface addition in the CODE
* section of EV_BACKEND_REGISTER_WITH_CODE (this macro relies on
* the g_define_type_id present within EV_BACKEND_REGISTER_WITH_CODE()).