diff options
| -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); | 
