From 40bdbed8a127356fadf9790aa0b479854c1c1d22 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Sun, 28 Jan 2007 16:43:22 +0000 Subject: [PATCH] Open links in new window when clicking with middle button. 2007-01-28 Carlos Garcia Campos * shell/ev-window.c: (view_external_link_cb): * shell/ev-view.c: (ev_view_button_release_event): Open links in new window when clicking with middle button. svn path=/trunk/; revision=2263 --- ChangeLog | 7 +++++++ shell/ev-view.c | 20 ++++++++++++++++++-- shell/ev-window.c | 10 ++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 151262c9..9c4d6b47 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-01-28 Carlos Garcia Campos + + * shell/ev-window.c: (view_external_link_cb): + * shell/ev-view.c: (ev_view_button_release_event): + + Open links in new window when clicking with middle button. + 2007-01-28 Nickolay V. Shmyrev * shell/ev-navigation-action.c: (new_history_menu_item): diff --git a/shell/ev-view.c b/shell/ev-view.c index 7275fb64..b722785e 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -2314,7 +2314,7 @@ ev_view_button_release_event (GtkWidget *widget, ev_view_set_cursor (view, EV_VIEW_CURSOR_NORMAL); } - if (view->document && view->pressed_button == 1) { + if (view->document && view->pressed_button != 3) { link = ev_view_get_link_at_location (view, event->x, event->y); } else { link = NULL; @@ -2343,7 +2343,23 @@ ev_view_button_release_event (GtkWidget *widget, view->selection_info.in_drag = FALSE; } else if (link) { - ev_view_handle_link (view, link); + if (event->button == 2) { + EvLinkAction *action; + EvLinkActionType type; + + action = ev_link_get_action (link); + if (!action) + return FALSE; + + type = ev_link_action_get_action_type (action); + if (type == EV_LINK_ACTION_TYPE_GOTO_DEST) { + g_signal_emit (view, + signals[SIGNAL_EXTERNAL_LINK], + 0, action); + } + } else { + ev_view_handle_link (view, link); + } } else if (view->presentation) { switch (event->button) { case 1: diff --git a/shell/ev-window.c b/shell/ev-window.c index 1d36a12b..8e414a57 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -4350,6 +4350,16 @@ static void view_external_link_cb (EvView *view, EvLinkAction *action, EvWindow *window) { switch (ev_link_action_get_action_type (action)) { + case EV_LINK_ACTION_TYPE_GOTO_DEST: { + EvLinkDest *dest; + + dest = ev_link_action_get_dest (action); + if (!dest) + return; + + ev_window_cmd_file_open_copy_at_dest (window, dest); + } + break; case EV_LINK_ACTION_TYPE_EXTERNAL_URI: launch_external_uri (window, action); break; -- 2.43.5