X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=surf.c;h=8a98e74d8c390c7ecb5b0ad54fdeb498fde5aa54;hb=42fdc77f5e4929fd618ab63e600ed550d52a0326;hp=726369a02f511624f064772f2efaf87de0841d38;hpb=c4f01cd18bf69dd24153f110be500ccc59eff498;p=surf.git diff --git a/surf.c b/surf.c index 726369a..8a98e74 100644 --- a/surf.c +++ b/surf.c @@ -167,9 +167,8 @@ static void progresschanged(WebKitWebView *v, GParamSpec *ps, Client *c); static void linkopen(Client *c, const Arg *arg); static void linkopenembed(Client *c, const Arg *arg); static void reload(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 scroll_h(Client *c, const Arg *a); +static void scroll_v(Client *c, const Arg *a); static void setatom(Client *c, int a, const char *v); static void setup(void); static void sigchld(int unused); @@ -179,7 +178,6 @@ static void titlechanged(WebKitWebView *view, GParamSpec *ps, Client *c); static void toggle(Client *c, const Arg *arg); static void togglecookiepolicy(Client *c, const Arg *arg); static void togglegeolocation(Client *c, const Arg *arg); -static void togglescrollbars(Client *c, const Arg *arg); static void togglestyle(Client *c, const Arg *arg); static void updatetitle(Client *c); static void updatewinid(Client *c); @@ -1169,40 +1167,17 @@ reload(Client *c, const Arg *arg) } void -scroll_h(Client *c, const Arg *arg) +scroll_h(Client *c, const Arg *a) { - scroll(gtk_scrolled_window_get_hadjustment( - GTK_SCROLLED_WINDOW(c->scroll)), arg); + evalscript(c, "window.scrollBy(%d * (window.innerWidth / 100), 0)", + a->i); } void -scroll_v(Client *c, const Arg *arg) +scroll_v(Client *c, const Arg *a) { - scroll(gtk_scrolled_window_get_vadjustment( - GTK_SCROLLED_WINDOW(c->scroll)), arg); -} - -void -scroll(GtkAdjustment *a, const Arg *arg) -{ - gdouble 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); + evalscript(c, "window.scrollBy(0, %d * (window.innerHeight / 100))", + a->i); } void @@ -1352,49 +1327,6 @@ togglegeolocation(Client *c, const Arg *arg) reload(c, &a); } -void -twitch(Client *c, const Arg *arg) -{ - GtkAdjustment *a; - gdouble v; - - a = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW( - c->scroll)); - - v = gtk_adjustment_get_value(a); - - v += 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 -togglescrollbars(Client *c, const Arg *arg) -{ - GtkPolicyType vspolicy; - Arg a; - - gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(c->scroll), NULL, - &vspolicy); - - if (vspolicy == GTK_POLICY_AUTOMATIC) { - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(c->scroll), - GTK_POLICY_NEVER, - GTK_POLICY_NEVER); - } else { - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(c->scroll), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - a.i = +1; - twitch(c, &a); - a.i = -1; - twitch(c, &a); - } -} - void togglestyle(Client *c, const Arg *arg) {