Modify decideresource() and favicon handling
[surf.git] / surf.c
diff --git a/surf.c b/surf.c
index 842b7ea..f5c7d1e 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -643,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);
        }
 }
 
@@ -755,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;
 }
@@ -1143,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://")
@@ -1164,6 +1164,7 @@ decideresource(WebKitPolicyDecision *d, Client *c)
                if (isascii) {
                        handleplumb(c, uri);
                        webkit_policy_decision_ignore(d);
+                       return;
                }
        }