diff options
author | Germán Poo-Caamaño <[email protected]> | 2014-05-02 18:25:30 -0700 |
---|---|---|
committer | raveit65 <[email protected]> | 2017-08-28 16:04:01 +0200 |
commit | 1407d52f712f3616e9420030726e2fbd1afbb45e (patch) | |
tree | 2a0a4b0f70dd0b5654794d28852463f9937f750b /libview | |
parent | 4a24be7eb05f971e77064fb22d7a649bf959d90b (diff) | |
download | atril-1407d52f712f3616e9420030726e2fbd1afbb45e.tar.bz2 atril-1407d52f712f3616e9420030726e2fbd1afbb45e.tar.xz |
libview: add ev_view_remove_annotation
Hide annotation windows if necessary and unset selected
element before removing an annotation.
https://bugzilla.gnome.org/show_bug.cgi?id=649044
origin commit:
https://git.gnome.org/browse/evince/commit/?id=927e956
Diffstat (limited to 'libview')
-rw-r--r-- | libview/ev-view.c | 34 | ||||
-rw-r--r-- | libview/ev-view.h | 2 |
2 files changed, 36 insertions, 0 deletions
diff --git a/libview/ev-view.c b/libview/ev-view.c index 6258ea33..6f7f2470 100644 --- a/libview/ev-view.c +++ b/libview/ev-view.c @@ -3093,6 +3093,40 @@ ev_view_cancel_add_annotation (EvView *view) ev_view_handle_cursor_over_xy (view, x, y); } +void +ev_view_remove_annotation (EvView *view, + EvAnnotation *annot) +{ + guint page; + + g_return_if_fail (EV_IS_VIEW (view)); + g_return_if_fail (EV_IS_ANNOTATION (annot)); + + page = ev_annotation_get_page_index (annot); + + if (EV_IS_ANNOTATION_MARKUP (annot)) { + EvViewWindowChild *child; + + child = ev_view_find_window_child_for_annot (view, page, annot); + if (child) { + view->window_children = g_list_remove (view->window_children, child); + gtk_widget_destroy (child->window); + g_free (child); + } + } + _ev_view_set_focused_element (view, NULL, -1); + + ev_document_doc_mutex_lock (); + ev_document_annotations_remove_annotation (EV_DOCUMENT_ANNOTATIONS (view->document), + annot); + ev_document_doc_mutex_unlock (); + + ev_page_cache_mark_dirty (view->page_cache, page); + + /* FIXME: only redraw the annot area */ + ev_view_reload_page (view, page, NULL); +} + static gboolean ev_view_synctex_backward_search (EvView *view, gdouble x, diff --git a/libview/ev-view.h b/libview/ev-view.h index 31a9bf41..d46cfcef 100644 --- a/libview/ev-view.h +++ b/libview/ev-view.h @@ -112,6 +112,8 @@ void ev_view_focus_annotation (EvView *view, void ev_view_begin_add_annotation (EvView *view, EvAnnotationType annot_type); void ev_view_cancel_add_annotation (EvView *view); +void ev_view_remove_annotation (EvView *view, + EvAnnotation *annot); /*For epub*/ void ev_view_disconnect_handlers (EvView *view); |