From 5ef0d418d651705e098d2a1a8495e86bf7c0f538 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Sun, 21 Feb 2010 10:27:44 +0000 Subject: Allow adding actions for more than one item in view popup menu Fixes bug #609497. --- (limited to 'libview') diff --git a/libview/ev-view-private.h b/libview/ev-view-private.h index 09f6163..0e5f449 100644 --- a/libview/ev-view-private.h +++ b/libview/ev-view-private.h @@ -192,7 +192,7 @@ struct _EvViewClass { void (*external_link) (EvView *view, EvLinkAction *action); void (*popup_menu) (EvView *view, - EvLink *link); + GList *items); void (*selection_changed) (EvView *view); }; diff --git a/libview/ev-view.c b/libview/ev-view.c index 760cf04..9c125d3 100644 --- a/libview/ev-view.c +++ b/libview/ev-view.c @@ -3096,29 +3096,26 @@ ev_view_do_popup_menu (EvView *view, gdouble x, gdouble y) { + GList *items = NULL; EvLink *link; EvImage *image; EvAnnotation *annot; image = ev_view_get_image_at_location (view, x, y); - if (image) { - g_signal_emit (view, signals[SIGNAL_POPUP_MENU], 0, image); - return TRUE; - } + if (image) + items = g_list_prepend (items, image); link = ev_view_get_link_at_location (view, x, y); - if (link) { - g_signal_emit (view, signals[SIGNAL_POPUP_MENU], 0, link); - return TRUE; - } + if (link) + items = g_list_prepend (items, link); annot = ev_view_get_annotation_at_location (view, x, y); - if (annot) { - g_signal_emit (view, signals[SIGNAL_POPUP_MENU], 0, annot); - return TRUE; - } + if (annot) + items = g_list_prepend (items, annot); + + g_signal_emit (view, signals[SIGNAL_POPUP_MENU], 0, items); - g_signal_emit (view, signals[SIGNAL_POPUP_MENU], 0, NULL); + g_list_free (items); return TRUE; } @@ -4265,9 +4262,9 @@ ev_view_class_init (EvViewClass *class) G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (EvViewClass, popup_menu), NULL, NULL, - g_cclosure_marshal_VOID__OBJECT, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, - G_TYPE_OBJECT); + G_TYPE_POINTER); signals[SIGNAL_SELECTION_CHANGED] = g_signal_new ("selection-changed", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, -- cgit v0.9.1