From 90f6f5dd6e86df8b3825be754e5cd48e683229de Mon Sep 17 00:00:00 2001 From: Moritz Lipp Date: Tue, 7 Feb 2012 18:34:39 +0100 Subject: [PATCH] Mouse scroll events --- config.c | 6 ++++-- shortcuts.c | 32 ++++++++++++++++++++++++++++++++ shortcuts.h | 11 +++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/config.c b/config.c index 8490cb5..ec6f8ba 100644 --- a/config.c +++ b/config.c @@ -134,8 +134,10 @@ config_load_default(zathura_t* zathura) girara_shortcut_add(gsession, 0, 0, "z0", sc_zoom, FULLSCREEN, ZOOM_ORIGINAL, NULL); /* mouse events */ - girara_mouse_event_add(gsession, 0, 0, sc_mouse_scroll, NORMAL, 0, NULL); - girara_mouse_event_add(gsession, 0, 0, sc_mouse_scroll, FULLSCREEN, 0, NULL); + girara_mouse_event_add(gsession, 0, 0, sc_mouse_scroll, NORMAL, 0, NULL); + girara_mouse_event_add(gsession, 0, 0, sc_mouse_scroll, FULLSCREEN, 0, NULL); + girara_mouse_event_add(gsession, GDK_CONTROL_MASK, 0, sc_mouse_zoom, NORMAL, 0, NULL); + girara_mouse_event_add(gsession, GDK_CONTROL_MASK, 0, sc_mouse_zoom, FULLSCREEN, 0, NULL); /* define default inputbar commands */ girara_inputbar_command_add(gsession, "bmark", NULL, cmd_bookmark_create, NULL, "Add a bookmark"); diff --git a/shortcuts.c b/shortcuts.c index 8f148f4..11ebdac 100644 --- a/shortcuts.c +++ b/shortcuts.c @@ -207,6 +207,38 @@ sc_mouse_scroll(girara_session_t* session, girara_argument_t* argument, girara_e return false; } +bool +sc_mouse_zoom(girara_session_t* session, girara_argument_t* argument, girara_event_t* event, unsigned int t) +{ + g_return_val_if_fail(session != NULL, false); + g_return_val_if_fail(session->global.data != NULL, false); + zathura_t* zathura = session->global.data; + g_return_val_if_fail(argument != NULL, false); + g_return_val_if_fail(event != NULL, false); + + if (zathura->document == NULL) { + return false; + } + + /* scroll event */ + if (event->type == GIRARA_EVENT_SCROLL) { + switch (event->direction) { + case GIRARA_SCROLL_UP: + argument->n = ZOOM_IN; + break; + case GIRARA_SCROLL_DOWN: + argument->n = ZOOM_OUT; + break; + default: + return false; + } + + return sc_zoom(session, argument, NULL, t); + } + + return false; +} + bool sc_navigate(girara_session_t* session, girara_argument_t* argument, girara_event_t* UNUSED(event), unsigned int t) diff --git a/shortcuts.h b/shortcuts.h index 01d74a3..1629d74 100644 --- a/shortcuts.h +++ b/shortcuts.h @@ -71,6 +71,17 @@ bool sc_goto(girara_session_t* session, girara_argument_t* argument, girara_even */ bool sc_mouse_scroll(girara_session_t* session, girara_argument_t* argument, girara_event_t* event, unsigned int t); +/** + * Handle mouse zoom events + * + * @param session The used girara session + * @param argument The used argument + * @param event Girara event + * @param t Number of executions + * @return true if no error occured otherwise false + */ +bool sc_mouse_zoom(girara_session_t* session, girara_argument_t* argument, girara_event_t* event, unsigned int t); + /** * Navigate through the document *