From cd5aaa1eabf27936c8a348d4712d711800bdd67f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Poo-Caama=C3=B1o?= Date: Fri, 2 May 2014 23:08:53 -0700 Subject: libdocument: add ev_mapping_list_remove Needed to remove annotations from a mapping list https://bugzilla.gnome.org/show_bug.cgi?id=649044 origin commit: https://git.gnome.org/browse/evince/commit/?id=5aac9ac --- libdocument/ev-mapping-list.c | 19 +++++++++++++++++++ libdocument/ev-mapping-list.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/libdocument/ev-mapping-list.c b/libdocument/ev-mapping-list.c index 8c639e8e..6745d1d9 100644 --- a/libdocument/ev-mapping-list.c +++ b/libdocument/ev-mapping-list.c @@ -156,6 +156,25 @@ ev_mapping_list_get_list (EvMappingList *mapping_list) return mapping_list ? mapping_list->list : NULL; } +/** + * ev_mapping_list_remove: + * @mapping_list: an #EvMappingList + * @mapping: #EvMapping to remove + * + * Returns: an #EvMappingList + * + * Since: 3.14 + */ +EvMappingList * +ev_mapping_list_remove (EvMappingList *mapping_list, + EvMapping *mapping) +{ + mapping_list->list = g_list_remove (mapping_list->list, mapping); + mapping_list->data_destroy_func (mapping->data); + g_free (mapping); + return mapping_list; +} + guint ev_mapping_list_get_page (EvMappingList *mapping_list) { diff --git a/libdocument/ev-mapping-list.h b/libdocument/ev-mapping-list.h index e4cb5a80..bb9494fa 100644 --- a/libdocument/ev-mapping-list.h +++ b/libdocument/ev-mapping-list.h @@ -42,6 +42,8 @@ void ev_mapping_list_unref (EvMappingList *mapping_list); guint ev_mapping_list_get_page (EvMappingList *mapping_list); GList *ev_mapping_list_get_list (EvMappingList *mapping_list); +EvMappingList *ev_mapping_list_remove (EvMappingList *mapping_list, + EvMapping *mapping); EvMapping *ev_mapping_list_find (EvMappingList *mapping_list, gconstpointer data); EvMapping *ev_mapping_list_find_custom (EvMappingList *mapping_list, -- cgit v1.2.1