From 742c9770a27aaeeeda87e0b3c6b97dd34a4988c0 Mon Sep 17 00:00:00 2001 From: Moritz Lipp Date: Mon, 12 Apr 2010 19:38:07 +0200 Subject: [PATCH] Implemented scrolling --- config.def.h | 9 +++++++++ zathura.c | 20 +++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/config.def.h b/config.def.h index f9a6ee5..e471ca3 100644 --- a/config.def.h +++ b/config.def.h @@ -120,6 +120,15 @@ InputbarShortcut inputbar_shortcuts[] = { {GDK_CONTROL_MASK, GDK_w, isc_string_manipulation, { DELETE_LAST_WORD } }, }; +/* mouse settings */ +MouseScrollEvent mouse_scroll_events[] = { + /* direction, function, argument */ + {GDK_SCROLL_LEFT, sc_scroll, { LEFT } }, + {GDK_SCROLL_UP, sc_scroll, { UP } }, + {GDK_SCROLL_DOWN, sc_scroll, { DOWN } }, + {GDK_SCROLL_RIGHT, sc_scroll, { RIGHT } }, +}; + /* commands */ Command commands[] = { /* command, abbreviation, function, completion, description */ diff --git a/zathura.c b/zathura.c index 27c5151..45bab4f 100644 --- a/zathura.c +++ b/zathura.c @@ -86,6 +86,13 @@ typedef struct Argument argument; } InputbarShortcut; +typedef struct +{ + int direction; + void (*function)(Argument*); + Argument argument; +} MouseScrollEvent; + typedef struct { char* command; @@ -1334,6 +1341,7 @@ sc_adjust_window(Argument* argument) Zathura.PDF.scale = (view_size / page_width) * 100; draw(Zathura.PDF.page_number); + update_status(); } void @@ -3317,7 +3325,17 @@ cb_view_button_pressed(GtkWidget* widget, GdkEventButton* event, gpointer data) gboolean cb_view_scrolled(GtkWidget* widget, GdkEventScroll* event, gpointer data) { - return TRUE; + int i; + for(i = 0; i < LENGTH(mouse_scroll_events); i++) + { + if(event->direction == mouse_scroll_events[i].direction) + { + mouse_scroll_events[i].function(&(mouse_scroll_events[i].argument)); + return TRUE; + } + } + + return FALSE; } /* main function */