surf

Surf web browser.
git clone git://r-36.net/surf
Log | Files | Refs | README | LICENSE

commit 3083ef4031aaf48926497397295b0db639a6a9c1
parent cf75bf2777560d4ded7083517f0c72395052f1f0
Author: Troels Henriksen <athas@sigkill.dk>
Date:   Thu, 31 May 2012 11:46:24 +0200

Keybindings for scrolling left and right; code by stanio.
Diffstat:
config.def.h | 10++++++++--
surf.c | 38++++++++++++++++++++++++++++----------
2 files changed, 36 insertions(+), 12 deletions(-)

diff --git 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") }, diff --git a/surf.c b/surf.c @@ -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