aboutsummaryrefslogtreecommitdiffstats
path: root/src/ephy-tab.c
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2006-01-30 05:47:22 +0800
committerChristian Persch <chpe@src.gnome.org>2006-01-30 05:47:22 +0800
commitbf0ea37b5138af83fde8e7aaba16669c4e43fd9c (patch)
tree0577a38705f373970c0f167ca73b34e24a33ecd0 /src/ephy-tab.c
parent34e421be7f10496d476266e656ddffe00b42b4e7 (diff)
downloadgsoc2013-epiphany-bf0ea37b5138af83fde8e7aaba16669c4e43fd9c.tar.gz
gsoc2013-epiphany-bf0ea37b5138af83fde8e7aaba16669c4e43fd9c.tar.zst
gsoc2013-epiphany-bf0ea37b5138af83fde8e7aaba16669c4e43fd9c.zip
Add a convenience function to get current event data.
2006-01-29 Christian Persch <chpe@cvs.gnome.org> * lib/ephy-gui.c: (ephy_gui_get_current_event): * lib/ephy-gui.h: Add a convenience function to get current event data. * src/ephy-link.c: (ephy_link_open), (ephy_link_flags_from_current_event): * src/ephy-link.h: Add a convenience function to translate the current event into EphyLinkFlags. * src/ephy-go-action.c: (ephy_go_action_get_type): * src/ephy-go-action.h: Make this an EphyLinkAction. * lib/widgets/ephy-location-entry.c: (entry_key_press_cb): * src/ephy-home-action.c: (ephy_home_action_activate): * src/ephy-location-action.c: (entry_activate_cb): * src/ephy-tab.c: (open_link_in_new), (ephy_tab_dom_mouse_click_cb): * src/window-commands.c: (window_cmd_load_location): Fix link activation to respect ctrl and shift modifiers. Part of bug #310814. 2006-01-29 Christian Persch <chpe@cvs.gnome.org>
Diffstat (limited to 'src/ephy-tab.c')
-rw-r--r--src/ephy-tab.c48
1 files changed, 25 insertions, 23 deletions
diff --git a/src/ephy-tab.c b/src/ephy-tab.c
index 3d91ded53..8a95ff477 100644
--- a/src/ephy-tab.c
+++ b/src/ephy-tab.c
@@ -1833,28 +1833,26 @@ ephy_tab_visibility_cb (EphyEmbed *embed, gboolean visibility,
}
static gboolean
-open_link_in_new_tab (EphyTab *tab,
- const char *link_address)
+open_link_in_new (EphyTab *tab,
+ const char *link_address,
+ guint state)
{
- gboolean new_tab;
+ EphyTab *dest;
- new_tab = address_has_web_scheme (link_address);
+ if (!address_has_web_scheme (link_address)) return FALSE;
- if (new_tab)
- {
- EphyTab *dest;
- dest = ephy_link_open (EPHY_LINK (tab), link_address,
- tab, EPHY_LINK_NEW_TAB);
+ dest = ephy_link_open (EPHY_LINK (tab), link_address, tab,
+ state & GDK_SHIFT_MASK ? EPHY_LINK_NEW_WINDOW
+ : EPHY_LINK_NEW_TAB);
- if (dest)
- {
- ephy_embed_shistory_copy (ephy_tab_get_embed (tab),
- ephy_tab_get_embed (dest),
- TRUE, /* back history */
- FALSE, /* forward history */
- FALSE); /* current index */
- return TRUE;
- }
+ if (dest)
+ {
+ ephy_embed_shistory_copy (ephy_tab_get_embed (tab),
+ ephy_tab_get_embed (dest),
+ TRUE, /* back history */
+ FALSE, /* forward history */
+ FALSE); /* current index */
+ return TRUE;
}
return FALSE;
@@ -1915,7 +1913,8 @@ ephy_tab_dom_mouse_click_cb (EphyEmbed *embed,
EphyEmbedEventContext context;
guint button, modifier;
gboolean handled = TRUE;
- gboolean with_control, with_shift, is_left_click, is_middle_click;
+ gboolean with_control, with_shift, with_shift_control;
+ gboolean is_left_click, is_middle_click;
gboolean is_link, is_image, is_middle_clickable;
gboolean middle_click_opens;
gboolean is_input;
@@ -1929,8 +1928,9 @@ ephy_tab_dom_mouse_click_cb (EphyEmbed *embed,
LOG ("ephy_tab_dom_mouse_click_cb: button %d, context %x, modifier %x",
button, context, modifier);
- with_control = (modifier & GDK_CONTROL_MASK) != 0;
- with_shift = (modifier & GDK_SHIFT_MASK) != 0;
+ with_control = (modifier & GDK_CONTROL_MASK) == GDK_CONTROL_MASK;
+ with_shift = (modifier & GDK_SHIFT_MASK) == GDK_SHIFT_MASK;
+ with_shift_control = (modifier & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) == (GDK_SHIFT_MASK | GDK_CONTROL_MASK);
is_left_click = (button == 1);
is_middle_click = (button == 2);
@@ -1946,14 +1946,16 @@ ephy_tab_dom_mouse_click_cb (EphyEmbed *embed,
is_input = (context & EPHY_EMBED_CONTEXT_INPUT) != 0;
/* ctrl+click or middle click opens the link in new tab */
- if (is_link && ((is_left_click && with_control) || is_middle_click))
+ if (is_link &&
+ ((is_left_click && (with_control || with_shift_control)) ||
+ is_middle_click))
{
const GValue *value;
const char *link_address;
value = ephy_embed_event_get_property (event, "link");
link_address = g_value_get_string (value);
- handled = open_link_in_new_tab (tab, link_address);
+ handled = open_link_in_new (tab, link_address, modifier);
}
/* shift+click saves the link target */
else if (is_link && is_left_click && with_shift)