diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2005-09-26 10:28:48 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-09-26 10:28:48 (GMT) |
commit | 85c366bda9f25b1249ba8333604eb3e757bc6edf (patch) | |
tree | 6b7287013297ea1d23c295f3c3b4f6cee198a949 /shell/ev-view.c | |
parent | b66c8a73177b462aebcb6e495341807abb31a93f (diff) |
Implement launch links. Delegate external link opening to the window.
2005-09-26 Marco Pesenti Gritti <mpg@redhat.com>
* backend/ev-link.c: (ev_link_type_get_type),
(ev_link_get_filename), (ev_link_get_params),
(ev_link_get_property), (ev_link_set_property),
(ev_window_dispose), (ev_link_class_init), (ev_link_new_launch):
* backend/ev-link.h:
* pdf/ev-poppler.cc:
* shell/ev-view.c: (ev_view_goto_link), (ev_view_class_init):
* shell/ev-window.c: (launch_link), (view_external_link_cb),
(ev_window_init):
Implement launch links. Delegate external link opening to
the window.
Diffstat (limited to 'shell/ev-view.c')
-rw-r--r-- | shell/ev-view.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/shell/ev-view.c b/shell/ev-view.c index c5cc503..15bd412 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -60,6 +60,7 @@ enum { enum { SIGNAL_BINDING_ACTIVATED, SIGNAL_ZOOM_INVALID, + SIGNAL_EXTERNAL_LINK, N_SIGNALS, }; @@ -188,6 +189,8 @@ struct _EvViewClass { GtkScrollType scroll, gboolean horizontal); void (*zoom_invalid) (EvView *view); + void (*external_link) (EvView *view, + EvLink *link); }; /*** Scrolling ***/ @@ -1234,7 +1237,6 @@ void ev_view_goto_link (EvView *view, EvLink *link) { EvLinkType type; - const char *uri; int page; type = ev_link_get_link_type (link); @@ -1262,8 +1264,8 @@ ev_view_goto_link (EvView *view, EvLink *link) goto_xyz_link (view, link); break; case EV_LINK_TYPE_EXTERNAL_URI: - uri = ev_link_get_uri (link); - gnome_vfs_url_show (uri); + case EV_LINK_TYPE_LAUNCH: + g_signal_emit (view, signals[SIGNAL_EXTERNAL_LINK], 0, link); break; } } @@ -2288,6 +2290,14 @@ ev_view_class_init (EvViewClass *class) NULL, NULL, ev_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE); + signals[SIGNAL_EXTERNAL_LINK] = g_signal_new ("external-link", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (EvViewClass, external_link), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + G_TYPE_OBJECT); g_object_class_install_property (object_class, PROP_STATUS, |