X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=surf.c;h=9a621e61618151956a8ee5fc239bb8dc38cc665b;hb=3083ef4031aaf48926497397295b0db639a6a9c1;hp=cac329b89e1d9b4481e575dff508c686213b5f64;hpb=df96fe4171c525968a81c794dc534dfb628807e7;p=surf.git diff --git a/surf.c b/surf.c index cac329b..9a621e6 100644 --- 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); @@ -127,12 +129,15 @@ buildpath(const char *path) { apath = g_strconcat(g_get_home_dir(), "/", path, NULL); if((p = strrchr(apath, '/'))) { *p = '\0'; - g_mkdir_with_parents(apath, 0755); + g_mkdir_with_parents(apath, 0700); + g_chmod(apath, 0700); /* in case it existed */ *p = '/'; } /* creating file (gives error when apath ends with "/") */ - if((f = fopen(apath, "a"))) + if((f = fopen(apath, "a"))) { + g_chmod(apath, 0600); /* always */ fclose(f); + } return apath; } @@ -345,7 +350,7 @@ initdownload(WebKitWebView *view, WebKitDownload *o, Client *c) { Arg arg; updatewinid(c); - arg = (Arg)DOWNLOAD((char *)webkit_download_get_uri(o), useragent); + arg = (Arg)DOWNLOAD((char *)webkit_download_get_uri(o)); spawn(c, &arg); return FALSE; } @@ -529,7 +534,7 @@ newclient(void) { g_object_set(G_OBJECT(settings), "auto-load-images", loadimage, NULL); g_object_set(G_OBJECT(settings), "enable-plugins", plugin, NULL); g_object_set(G_OBJECT(settings), "enable-scripts", script, NULL); - g_object_set(G_OBJECT(settings), "enable-spatial-navigation", true, NULL); + g_object_set(G_OBJECT(settings), "enable-spatial-navigation", SPATIAL_BROWSING, NULL); g_free(uri); @@ -545,6 +550,9 @@ newclient(void) { gdk_display_sync(gtk_widget_get_display(c->win)); printf("%u\n", (guint)GDK_WINDOW_XID(GTK_WIDGET(c->win)->window)); fflush(NULL); + if (fclose(stdout) != 0) { + die("Error closing stdout"); + } } return c; } @@ -656,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); +} - 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); +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; + + 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 @@ -793,10 +817,10 @@ void update(Client *c) { char *t; - if(c->progress != 100) - t = g_strdup_printf("[%i%%] %s", c->progress, c->title); - else if(c->linkhover) + if(c->linkhover) t = g_strdup(c->linkhover); + else if(c->progress != 100) + t = g_strdup_printf("[%i%%] %s", c->progress, c->title); else t = g_strdup(c->title); drawindicator(c); @@ -867,7 +891,7 @@ main(int argc, char *argv[]) { showxid = TRUE; break; case 'v': - die("surf-"VERSION", © 2009 surf engineers, see LICENSE for details\n"); + die("surf-"VERSION", ©2009-2012 surf engineers, see LICENSE for details\n"); default: usage(); }