diff options
| -rw-r--r-- | libview/ev-view-private.h | 2 | ||||
| -rw-r--r-- | libview/ev-view.c | 14 | ||||
| -rw-r--r-- | shell/ev-sidebar-annotations.c | 6 | ||||
| -rw-r--r-- | shell/ev-sidebar-annotations.h | 9 | ||||
| -rw-r--r-- | shell/ev-window.c | 11 | 
5 files changed, 38 insertions, 4 deletions
| diff --git a/libview/ev-view-private.h b/libview/ev-view-private.h index 4711e8f9..02219641 100644 --- a/libview/ev-view-private.h +++ b/libview/ev-view-private.h @@ -242,6 +242,8 @@ struct _EvViewClass {  					   EvSourceLink   *link);  	void    (*annot_added)            (EvView         *view,  					   EvAnnotation   *annot); +	void    (*annot_removed)          (EvView         *view, +					   EvAnnotation   *annot);  	void    (*layers_changed)         (EvView         *view);  }; diff --git a/libview/ev-view.c b/libview/ev-view.c index f409a2e5..b898286e 100644 --- a/libview/ev-view.c +++ b/libview/ev-view.c @@ -57,6 +57,7 @@ enum {  	SIGNAL_SELECTION_CHANGED,  	SIGNAL_SYNC_SOURCE,  	SIGNAL_ANNOT_ADDED, +	SIGNAL_ANNOT_REMOVED,  	SIGNAL_LAYERS_CHANGED,  	N_SIGNALS  }; @@ -3102,6 +3103,8 @@ ev_view_remove_annotation (EvView       *view,          g_return_if_fail (EV_IS_VIEW (view));          g_return_if_fail (EV_IS_ANNOTATION (annot)); +        g_object_ref (annot); +          page = ev_annotation_get_page_index (annot);          if (EV_IS_ANNOTATION_MARKUP (annot)) { @@ -3125,6 +3128,9 @@ ev_view_remove_annotation (EvView       *view,          /* FIXME: only redraw the annot area */          ev_view_reload_page (view, page, NULL); + +        g_signal_emit (view, signals[SIGNAL_ANNOT_REMOVED], 0, annot); +        g_object_unref (annot);  }  static gboolean @@ -5189,6 +5195,14 @@ ev_view_class_init (EvViewClass *class)  		         g_cclosure_marshal_VOID__OBJECT,  		         G_TYPE_NONE, 1,  			 EV_TYPE_ANNOTATION); +	signals[SIGNAL_ANNOT_REMOVED] = g_signal_new ("annot-removed", +		         G_TYPE_FROM_CLASS (object_class), +		         G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, +		         G_STRUCT_OFFSET (EvViewClass, annot_removed), +		         NULL, NULL, +		         g_cclosure_marshal_VOID__OBJECT, +		         G_TYPE_NONE, 1, +		         EV_TYPE_ANNOTATION);  	signals[SIGNAL_LAYERS_CHANGED] = g_signal_new ("layers-changed",  			 G_TYPE_FROM_CLASS (object_class),  		         G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, diff --git a/shell/ev-sidebar-annotations.c b/shell/ev-sidebar-annotations.c index 6cb98fef..ee605005 100644 --- a/shell/ev-sidebar-annotations.c +++ b/shell/ev-sidebar-annotations.c @@ -303,6 +303,12 @@ ev_sidebar_annotations_annot_added (EvSidebarAnnotations *sidebar_annots,  	ev_sidebar_annotations_load (sidebar_annots);  } +void +ev_sidebar_annotations_annot_removed (EvSidebarAnnotations *sidebar_annots) +{ +	ev_sidebar_annotations_load (sidebar_annots); +} +  static void  selection_changed_cb (GtkTreeSelection     *selection,  		      EvSidebarAnnotations *sidebar_annots) diff --git a/shell/ev-sidebar-annotations.h b/shell/ev-sidebar-annotations.h index 9aa7181c..db80983f 100644 --- a/shell/ev-sidebar-annotations.h +++ b/shell/ev-sidebar-annotations.h @@ -53,10 +53,11 @@ struct _EvSidebarAnnotationsClass {  	void    (* annot_add_cancelled) (EvSidebarAnnotations *sidebar_annots);  }; -GType      ev_sidebar_annotations_get_type    (void) G_GNUC_CONST; -GtkWidget *ev_sidebar_annotations_new         (void); -void       ev_sidebar_annotations_annot_added (EvSidebarAnnotations *sidebar_annots, -					       EvAnnotation         *annot); +GType      ev_sidebar_annotations_get_type      (void) G_GNUC_CONST; +GtkWidget *ev_sidebar_annotations_new           (void); +void       ev_sidebar_annotations_annot_added   (EvSidebarAnnotations *sidebar_annots, +                                                 EvAnnotation         *annot); +void       ev_sidebar_annotations_annot_removed (EvSidebarAnnotations *sidebar_annots);  G_END_DECLS  #endif /* __EV_SIDEBAR_ANNOTATIONS_H__ */ diff --git a/shell/ev-window.c b/shell/ev-window.c index 13870211..ecdc86bf 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -6442,6 +6442,14 @@ view_annot_added (EvView       *view,  }  static void +view_annot_removed (EvView       *view, +                    EvAnnotation *annot, +                    EvWindow     *window) +{ +	ev_sidebar_annotations_annot_removed (EV_SIDEBAR_ANNOTATIONS (window->priv->sidebar_annots)); +} + +static void  sidebar_annots_annot_add_cancelled (EvSidebarAnnotations *sidebar_annots,  				    EvWindow             *window)  { @@ -7870,6 +7878,9 @@ ev_window_init (EvWindow *ev_window)  	g_signal_connect_object (ev_window->priv->view, "annot-added",  				 G_CALLBACK (view_annot_added),  				 ev_window, 0); +	g_signal_connect_object (ev_window->priv->view, "annot-removed", +				 G_CALLBACK (view_annot_removed), +				 ev_window, 0);  	g_signal_connect_object (ev_window->priv->view, "layers-changed",  				 G_CALLBACK (view_layers_changed_cb),  				 ev_window, 0); | 
