X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=surf.c;h=36f243e8febb9596a7d505ee79e78210b45d1daf;hb=b3a4392923b26e81c4faa35907a4a2d071e2275f;hp=42dbf2116d990155dba3a86c5726478baa708545;hpb=68813b3a4640dcfcbe002a1ff5803f04b9c50c06;p=surf.git diff --git a/surf.c b/surf.c index 42dbf21..36f243e 100644 --- a/surf.c +++ b/surf.c @@ -213,6 +213,7 @@ beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r, WebKitNetworkRequest *req, WebKitNetworkResponse *resp, Client *c) { const gchar *uri = webkit_network_request_get_uri(req); + int i, isascii = 1; if(g_str_has_suffix(uri, "/favicon.ico")) webkit_network_request_set_uri(req, "about:blank"); @@ -222,8 +223,17 @@ beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r, && !g_str_has_prefix(uri, "about:") \ && !g_str_has_prefix(uri, "file://") \ && !g_str_has_prefix(uri, "data:") \ + && !g_str_has_prefix(uri, "blob:") \ && strlen(uri) > 0) { - handleplumb(c, w, uri); + + for(i = 0; i < strlen(uri); i++) { + if(!g_ascii_isprint(uri[i])) { + isascii = 0; + break; + } + } + if(isascii) + handleplumb(c, w, uri); } } @@ -282,7 +292,7 @@ buttonrelease(WebKitWebView *web, GdkEventButton *e, GList *gl) { static void cleanup(void) { - if (diskcache) { + if(diskcache) { soup_cache_flush(diskcache); soup_cache_dump(diskcache); } @@ -563,6 +573,9 @@ static gchar * getstyle(const char *uri) { int i; + if(stylefile != NULL) + return g_strconcat("file://", stylefile, NULL); + for(i = 0; i < LENGTH(styles); i++) { if(styles[i].regex && !regexec(&(styles[i].re), uri, 0, NULL, 0)) { @@ -694,7 +707,7 @@ loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c) { } setatom(c, AtomUri, uri); - if(stylefile == NULL && enablestyles) { + if(enablestyles) { g_object_set(G_OBJECT(set), "user-stylesheet-uri", getstyle(uri), NULL); } @@ -702,7 +715,7 @@ loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c) { case WEBKIT_LOAD_FINISHED: c->progress = 100; updatetitle(c); - if (diskcache) { + if(diskcache) { soup_cache_flush(diskcache); soup_cache_dump(diskcache); } @@ -760,7 +773,7 @@ newclient(void) { GdkGeometry hints = { 1, 1 }; GdkScreen *screen; gdouble dpi; - char *uri = NULL, *ua; + char *ua; if(!(c = calloc(1, sizeof(Client)))) die("Cannot malloc!\n"); @@ -890,9 +903,9 @@ newclient(void) { if(!(ua = getenv("SURF_USERAGENT"))) ua = useragent; g_object_set(G_OBJECT(settings), "user-agent", ua, NULL); - if (stylefile != NULL) { - uri = g_strconcat("file://", stylefile, NULL); - g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL); + if (enablestyles) { + g_object_set(G_OBJECT(settings), "user-stylesheet-uri", + getstyle("about:blank"), NULL); } g_object_set(G_OBJECT(settings), "auto-load-images", loadimages, NULL); @@ -948,9 +961,6 @@ newclient(void) { fullscreen(c, NULL); } - if(stylefile != NULL) - g_free(uri); - setatom(c, AtomFind, ""); setatom(c, AtomUri, "about:blank"); if(hidebackground) @@ -1182,7 +1192,7 @@ setup(void) { scriptfile = buildpath(scriptfile); cachefolder = buildpath(cachefolder); styledir = buildpath(styledir); - if(stylefile == NULL && enablestyles) { + if(stylefile == NULL) { for(i = 0; i < LENGTH(styles); i++) { if(regcomp(&(styles[i].re), styles[i].regex, REG_EXTENDED)) { @@ -1376,13 +1386,8 @@ togglestyle(Client *c, const Arg *arg) { WebKitWebSettings *settings = webkit_web_view_get_settings(c->view); char *uri; - g_object_get(G_OBJECT(settings), "user-stylesheet-uri", &uri, NULL); - if(stylefile == NULL && enablestyles) { - uri = (uri && uri[0])? g_strdup("") : getstyle(geturi(c)); - } else { - uri = uri[0]? g_strdup("") : g_strconcat("file://", - stylefile, NULL); - } + enablestyles = !enablestyles; + uri = enablestyles ? getstyle(geturi(c)) : g_strdup(""); g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL); updatetitle(c); @@ -1391,7 +1396,6 @@ togglestyle(Client *c, const Arg *arg) { static void gettogglestat(Client *c){ gboolean value; - char *uri; int p = 0; WebKitWebSettings *settings = webkit_web_view_get_settings(c->view); @@ -1414,8 +1418,7 @@ gettogglestat(Client *c){ g_object_get(G_OBJECT(settings), "enable-plugins", &value, NULL); togglestat[p++] = value? 'V': 'v'; - g_object_get(G_OBJECT(settings), "user-stylesheet-uri", &uri, NULL); - togglestat[p++] = (uri && uri[0]) ? 'M': 'm'; + togglestat[p++] = enablestyles ? 'M': 'm'; togglestat[p] = '\0'; }