diff --git a/config.def.h b/config.def.h index 35507f7..768b4ea 100644 --- a/config.def.h +++ b/config.def.h @@ -103,6 +103,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 8df09c6..879cdfb 100644 --- a/zathura.c +++ b/zathura.c @@ -85,6 +85,13 @@ typedef struct Argument argument; } InputbarShortcut; +typedef struct +{ + int direction; + void (*function)(Argument*); + Argument argument; +} MouseScrollEvent; + typedef struct { char* command; @@ -1255,6 +1262,7 @@ sc_adjust_window(Argument* argument) Zathura.PDF.scale = (view_size / page_width) * 100; draw(Zathura.PDF.page_number); + update_status(); } void @@ -3074,7 +3082,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 */