X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=surf.c;h=f5c7d1e9d7b5d25772244661deacc78578bfc73e;hb=c3a827d621fbedfb974db9d137d3e5bea66490b4;hp=5043d33c63da44d6c47c356ae87df20af8a518a0;hpb=7c24c61ab22990ce8dd8158706f11ae7cba77bf0;p=surf.git diff --git a/surf.c b/surf.c index 5043d33..f5c7d1e 100644 --- a/surf.c +++ b/surf.c @@ -333,14 +333,12 @@ newclient(Client *rc) if (!(c = calloc(1, sizeof(Client)))) die("Cannot malloc!\n"); - c->title = NULL; - c->progress = 100; - c->next = clients; clients = c; - c->view = newview(c, rc ? rc->view : NULL); + c->progress = 100; c->tlsflags = G_TLS_CERTIFICATE_VALIDATE_ALL + 1; + c->view = newview(c, rc ? rc->view : NULL); return c; } @@ -435,26 +433,24 @@ void updatetitle(Client *c) { char *title; + const char *name = c->targeturi ? c->targeturi : + c->title ? c->title : ""; if (showindicators) { gettogglestats(c); getpagestats(c); - if (c->progress != 100) { + if (c->progress != 100) title = g_strdup_printf("[%i%%] %s:%s | %s", - c->progress, togglestats, pagestats, - c->targeturi ? c->targeturi : c->title); - } else { + c->progress, togglestats, pagestats, name); + else title = g_strdup_printf("%s:%s | %s", - togglestats, pagestats, - c->targeturi ? c->targeturi : c->title); - } + togglestats, pagestats, name); gtk_window_set_title(GTK_WINDOW(c->win), title); g_free(title); } else { - gtk_window_set_title(GTK_WINDOW(c->win), c->title ? - c->title : ""); + gtk_window_set_title(GTK_WINDOW(c->win), name); } } @@ -489,12 +485,11 @@ cookiepolicy_get(void) return WEBKIT_COOKIE_POLICY_ACCEPT_NEVER; case '@': return WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY; + default: /* fallthrough */ case 'A': - default: - break; + return WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS; } - return WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS; } char @@ -505,12 +500,11 @@ cookiepolicy_set(const WebKitCookieAcceptPolicy p) return 'a'; case WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY: return '@'; + default: /* fallthrough */ case WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS: - default: - break; + return 'A'; } - return 'A'; } const char * @@ -649,9 +643,9 @@ spawn(Client *c, const Arg *a) close(ConnectionNumber(dpy)); setsid(); execvp(((char **)a->v)[0], (char **)a->v); - fprintf(stderr, "surf: execvp %s", ((char **)a->v)[0]); + fprintf(stderr, "%s: execvp %s", argv0, ((char **)a->v)[0]); perror(" failed"); - exit(0); + exit(1); } } @@ -761,26 +755,26 @@ newview(Client *c, WebKitWebView *rv) NULL); } + g_signal_connect(G_OBJECT(v), "notify::estimated-load-progress", + G_CALLBACK(progresschanged), c); g_signal_connect(G_OBJECT(v), "notify::title", G_CALLBACK(titlechanged), c); - g_signal_connect(G_OBJECT(v), "mouse-target-changed", - G_CALLBACK(mousetargetchanged), c); - g_signal_connect(G_OBJECT(v), "permission-request", - G_CALLBACK(permissionrequested), c); + g_signal_connect(G_OBJECT(v), "button-release-event", + G_CALLBACK(buttonreleased), c); + g_signal_connect(G_OBJECT(v), "close", + G_CALLBACK(closeview), c); g_signal_connect(G_OBJECT(v), "create", G_CALLBACK(createview), c); - g_signal_connect(G_OBJECT(v), "ready-to-show", - G_CALLBACK(showview), c); g_signal_connect(G_OBJECT(v), "decide-policy", G_CALLBACK(decidepolicy), c); g_signal_connect(G_OBJECT(v), "load-changed", G_CALLBACK(loadchanged), c); - g_signal_connect(G_OBJECT(v), "notify::estimated-load-progress", - G_CALLBACK(progresschanged), c); - g_signal_connect(G_OBJECT(v), "button-release-event", - G_CALLBACK(buttonreleased), c); - g_signal_connect(G_OBJECT(v), "close", - G_CALLBACK(closeview), c); + g_signal_connect(G_OBJECT(v), "mouse-target-changed", + G_CALLBACK(mousetargetchanged), c); + g_signal_connect(G_OBJECT(v), "permission-request", + G_CALLBACK(permissionrequested), c); + g_signal_connect(G_OBJECT(v), "ready-to-show", + G_CALLBACK(showview), c); return v; } @@ -1149,10 +1143,10 @@ decideresource(WebKitPolicyDecision *d, Client *c) webkit_response_policy_decision_get_response(r); const gchar *uri = webkit_uri_response_get_uri(res); - if (g_str_has_suffix(uri, "/favicon.ico")) - webkit_uri_request_set_uri( - webkit_response_policy_decision_get_request(r), - "about:blank"); + if (g_str_has_suffix(uri, "/favicon.ico")) { + webkit_policy_decision_ignore(d); + return; + } if (!g_str_has_prefix(uri, "http://") && !g_str_has_prefix(uri, "https://") @@ -1170,6 +1164,7 @@ decideresource(WebKitPolicyDecision *d, Client *c) if (isascii) { handleplumb(c, uri); webkit_policy_decision_ignore(d); + return; } } @@ -1220,7 +1215,7 @@ void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d) { Arg a = {.v = text }; - if (!text) + if (text) loaduri((Client *) d, &a); } @@ -1543,15 +1538,15 @@ main(int argc, char *argv[]) } ARGEND; if (argc > 0) arg.v = argv[0]; + else + arg.v = "about:blank"; setup(); c = newclient(NULL); showview(NULL, c); - if (arg.v) - loaduri(clients, &arg); - else - updatetitle(c); + loaduri(c, &arg); + updatetitle(c); gtk_main(); cleanup();