diff options
author | Christian Persch <chpe@cvs.gnome.org> | 2006-01-30 05:47:22 +0800 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2006-01-30 05:47:22 +0800 |
commit | bf0ea37b5138af83fde8e7aaba16669c4e43fd9c (patch) | |
tree | 0577a38705f373970c0f167ca73b34e24a33ecd0 /lib | |
parent | 34e421be7f10496d476266e656ddffe00b42b4e7 (diff) | |
download | gsoc2013-epiphany-bf0ea37b5138af83fde8e7aaba16669c4e43fd9c.tar gsoc2013-epiphany-bf0ea37b5138af83fde8e7aaba16669c4e43fd9c.tar.gz gsoc2013-epiphany-bf0ea37b5138af83fde8e7aaba16669c4e43fd9c.tar.bz2 gsoc2013-epiphany-bf0ea37b5138af83fde8e7aaba16669c4e43fd9c.tar.lz gsoc2013-epiphany-bf0ea37b5138af83fde8e7aaba16669c4e43fd9c.tar.xz 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 'lib')
-rw-r--r-- | lib/ephy-gui.c | 36 | ||||
-rw-r--r-- | lib/ephy-gui.h | 4 | ||||
-rw-r--r-- | lib/widgets/ephy-location-entry.c | 6 |
3 files changed, 44 insertions, 2 deletions
diff --git a/lib/ephy-gui.c b/lib/ephy-gui.c index 99e68bc2b..7ed8b36ef 100644 --- a/lib/ephy-gui.c +++ b/lib/ephy-gui.c @@ -416,6 +416,42 @@ ephy_gui_help (GtkWindow *parent, } } +void +ephy_gui_get_current_event (GdkEventType *otype, + guint *ostate, + guint *obutton) +{ + GdkEvent *event; + GdkEventType type = GDK_NOTHING; + guint state = 0, button = (guint) -1; + + event = gtk_get_current_event (); + if (event != NULL) + { + type = event->type; + + if (type == GDK_KEY_PRESS || + type == GDK_KEY_RELEASE) + { + state = event->key.state; + } + else if (type == GDK_BUTTON_PRESS || + type == GDK_BUTTON_RELEASE || + type == GDK_2BUTTON_PRESS || + type == GDK_3BUTTON_PRESS) + { + button = event->button.button; + state = event->button.state; + } + + gdk_event_free (event); + } + + if (otype) *otype = type; + if (ostate) *ostate = state & gtk_accelerator_get_default_mod_mask (); + if (obutton) *obutton = button; +} + gboolean ephy_gui_is_middle_click (void) { diff --git a/lib/ephy-gui.h b/lib/ephy-gui.h index 3dc1eb18d..c46efe746 100644 --- a/lib/ephy-gui.h +++ b/lib/ephy-gui.h @@ -61,6 +61,10 @@ void ephy_gui_menu_position_on_panel (GtkMenu *menu, GtkWindowGroup *ephy_gui_ensure_window_group (GtkWindow *window); +void ephy_gui_get_current_event (GdkEventType *type, + guint *state, + guint *button); + gboolean ephy_gui_is_middle_click (void); gboolean ephy_gui_check_location_writable (GtkWidget *parent, diff --git a/lib/widgets/ephy-location-entry.c b/lib/widgets/ephy-location-entry.c index a77797a40..f38742d03 100644 --- a/lib/widgets/ephy-location-entry.c +++ b/lib/widgets/ephy-location-entry.c @@ -380,7 +380,8 @@ entry_key_press_cb (GtkEntry *entry, if ((event->keyval == GDK_Return || event->keyval == GDK_KP_Enter || event->keyval == GDK_ISO_Enter) && - state == GDK_CONTROL_MASK) + (state == GDK_CONTROL_MASK || + state == (GDK_CONTROL_MASK | GDK_SHIFT_MASK))) { gtk_im_context_reset (entry->im_context); @@ -388,7 +389,8 @@ entry_key_press_cb (GtkEntry *entry, return TRUE; } - else if (event->keyval == GDK_Escape && state == 0) + + if (event->keyval == GDK_Escape && state == 0) { ephy_location_entry_reset (lentry); /* don't return TRUE since we want to cancel the autocompletion popup too */ |