diff options
author | Xan Lopez <xan@src.gnome.org> | 2008-11-30 03:14:13 +0800 |
---|---|---|
committer | Xan Lopez <xan@src.gnome.org> | 2008-11-30 03:14:13 +0800 |
commit | 06eb49ff9adc6a5038abe630da95ffa2f99d91a9 (patch) | |
tree | a25458b777305db378f2998beaeb58f1be7f919d | |
parent | 1c6fdb2761de494f6ce4c6cd2e2e57c03827c88f (diff) | |
download | gsoc2013-epiphany-06eb49ff9adc6a5038abe630da95ffa2f99d91a9.tar gsoc2013-epiphany-06eb49ff9adc6a5038abe630da95ffa2f99d91a9.tar.gz gsoc2013-epiphany-06eb49ff9adc6a5038abe630da95ffa2f99d91a9.tar.bz2 gsoc2013-epiphany-06eb49ff9adc6a5038abe630da95ffa2f99d91a9.tar.lz gsoc2013-epiphany-06eb49ff9adc6a5038abe630da95ffa2f99d91a9.tar.xz gsoc2013-epiphany-06eb49ff9adc6a5038abe630da95ffa2f99d91a9.tar.zst gsoc2013-epiphany-06eb49ff9adc6a5038abe630da95ffa2f99d91a9.zip |
window: zoom in/out with ctrl+scroll-{up,down}
We connect to the scroll-event of the view directly because
GtkScrolledWindow eats all the GdkEventScroll it gets without checking
the modifier keys mask, making it impossible to set-up our own handler
for scroll-event.
svn path=/trunk/; revision=8619
-rw-r--r-- | src/ephy-window.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/ephy-window.c b/src/ephy-window.c index d047aa462..a3ccffbdf 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -883,6 +883,24 @@ menubar_deactivate_cb (GtkWidget *menubar, } static gboolean +scroll_event_cb (GtkWidget *widget, + GdkEventScroll *event, + EphyWindow *window) +{ + guint modifier = event->state & gtk_accelerator_get_default_mod_mask (); + + if (modifier != GDK_CONTROL_MASK) + return FALSE; + + if (event->direction == GDK_SCROLL_UP) + ephy_window_set_zoom (window, ZOOM_IN); + else if (event->direction == GDK_SCROLL_DOWN) + ephy_window_set_zoom (window, ZOOM_OUT); + + return TRUE; +} + +static gboolean ephy_window_key_press_event (GtkWidget *widget, GdkEventKey *event) { @@ -2412,6 +2430,9 @@ ephy_window_set_active_tab (EphyWindow *window, EphyEmbed *new_embed) g_signal_handlers_disconnect_by_func (web_view, G_CALLBACK (sync_tab_zoom), window); + g_signal_handlers_disconnect_by_func (web_view, + G_CALLBACK (scroll_event_cb), + window); g_signal_handlers_disconnect_by_func (embed, G_CALLBACK (sync_tab_popup_windows), @@ -2484,6 +2505,15 @@ ephy_window_set_active_tab (EphyWindow *window, EphyEmbed *new_embed) g_signal_connect_object (web_view, "notify::zoom-level", G_CALLBACK (sync_tab_zoom), window, 0); + /* FIXME: we should set our own handler for + scroll-event, but right now it's pointless because + GtkScrolledWindow will eat all the events, even + those with modifier keys we want to catch to zoom + in and out. See bug #562630 + */ + g_signal_connect_object (web_view, "scroll-event", + G_CALLBACK (scroll_event_cb), + window, 0); g_signal_connect_object (embed, "notify::hidden-popup-count", G_CALLBACK (sync_tab_popup_windows), |