diff options
| -rw-r--r-- | config.def.h | 10 | ||||
| -rw-r--r-- | surf.c | 38 | 
2 files changed, 36 insertions, 12 deletions
diff --git a/config.def.h b/config.def.h index 9917b76..e03b13d 100644 --- a/config.def.h +++ b/config.def.h @@ -34,8 +34,14 @@ static Key keys[] = {      { MODKEY|GDK_SHIFT_MASK,GDK_i,      zoom,       { .i = 0  } },      { MODKEY,               GDK_l,      navigate,   { .i = +1 } },      { MODKEY,               GDK_h,      navigate,   { .i = -1 } }, -    { MODKEY,               GDK_j,      scroll,     { .i = +1 } }, -    { MODKEY,               GDK_k,      scroll,     { .i = -1 } }, +    { MODKEY,               GDK_j,           scroll_v,   { .i = +1 } }, +    { MODKEY,               GDK_k,           scroll_v,   { .i = -1 } }, +    { MODKEY,               GDK_g,           scroll_v,   { .i = -20000 } }, +    { MODKEY|GDK_SHIFT_MASK,GDK_g,           scroll_v,   { .i = +20000 } }, +    { MODKEY,               GDK_b,           scroll_v,   { .i = -10000 } }, +    { MODKEY,               GDK_space,       scroll_v,   { .i = +10000 } }, +    { MODKEY,               GDK_l,           scroll_h,   { .i = +1 } }, +    { MODKEY,               GDK_h,           scroll_h,   { .i = -1 } },      { 0,                    GDK_Escape, stop,       { 0 } },      { MODKEY,               GDK_o,      source,     { 0 } },      { MODKEY,               GDK_g,      spawn,      SETPROP("_SURF_URI", "_SURF_GO") }, @@ -96,7 +96,9 @@ static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event, gpointer d);  static void progresschange(WebKitWebView *view, GParamSpec *pspec, Client *c);  static void reload(Client *c, const Arg *arg);  static void resize(GtkWidget *w, GtkAllocation *a, Client *c); -static void scroll(Client *c, const Arg *arg); +static void scroll_h(Client *c, const Arg *arg); +static void scroll_v(Client *c, const Arg *arg); +static void scroll(GtkAdjustment *a, const Arg *arg);  static void setatom(Client *c, int a, const char *v);  static void setcookie(SoupCookie *c);  static void setup(void); @@ -662,16 +664,32 @@ resize(GtkWidget *w, GtkAllocation *a, Client *c) {  }  void -scroll(Client *c, const Arg *arg) { -	gdouble v; -	GtkAdjustment *a; +scroll_h(Client *c, const Arg *arg) { + scroll(gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(c->scroll)), arg); +} + +void +scroll_v(Client *c, const Arg *arg) { + scroll(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(c->scroll)), arg); +} + +void +scroll(GtkAdjustment *a, const Arg *arg) { + gdouble v; -	a = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(c->scroll)); -	v = gtk_adjustment_get_value(a); -	v += gtk_adjustment_get_step_increment(a) * arg->i; -	v = MAX(v, 0.0); -	v = MIN(v, gtk_adjustment_get_upper(a) - gtk_adjustment_get_page_size(a)); -	gtk_adjustment_set_value(a, v); + v = gtk_adjustment_get_value(a); + switch (arg->i){ + case +10000: + case -10000: + v += gtk_adjustment_get_page_increment(a) * (arg->i / 10000); break; + case +20000: + case -20000: + default: + v += gtk_adjustment_get_step_increment(a) * arg->i; + } + v = MAX(v, 0.0); + v = MIN(v, gtk_adjustment_get_upper(a) - gtk_adjustment_get_page_size(a)); + gtk_adjustment_set_value(a, v);  }  void  | 
