Add plumbing functionality.
This commit is contained in:
parent
7c34d5061e
commit
9c3b5ad353
|
@ -53,6 +53,13 @@ static Bool allowgeolocation = TRUE;
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* PLUMB(URI) */
|
||||||
|
#define PLUMB(u) {\
|
||||||
|
.v = (char *[]){ "/bin/sh", "-c", \
|
||||||
|
"xdg-open \"$0\"", u, NULL \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
/* styles */
|
/* styles */
|
||||||
/*
|
/*
|
||||||
* The iteration will stop at the first match, beginning at the beginning of
|
* The iteration will stop at the first match, beginning at the beginning of
|
||||||
|
|
23
surf.c
23
surf.c
|
@ -95,7 +95,7 @@ static SoupCache *diskcache = NULL;
|
||||||
static void addaccelgroup(Client *c);
|
static void addaccelgroup(Client *c);
|
||||||
static void beforerequest(WebKitWebView *w, WebKitWebFrame *f,
|
static void beforerequest(WebKitWebView *w, WebKitWebFrame *f,
|
||||||
WebKitWebResource *r, WebKitNetworkRequest *req,
|
WebKitWebResource *r, WebKitNetworkRequest *req,
|
||||||
WebKitNetworkResponse *resp, gpointer d);
|
WebKitNetworkResponse *resp, Client *c);
|
||||||
static char *buildpath(const char *path);
|
static char *buildpath(const char *path);
|
||||||
static gboolean buttonrelease(WebKitWebView *web, GdkEventButton *e,
|
static gboolean buttonrelease(WebKitWebView *web, GdkEventButton *e,
|
||||||
GList *gl);
|
GList *gl);
|
||||||
|
@ -138,6 +138,8 @@ static void getpagestat(Client *c);
|
||||||
static char *geturi(Client *c);
|
static char *geturi(Client *c);
|
||||||
static gchar *getstyle(const char *uri);
|
static gchar *getstyle(const char *uri);
|
||||||
|
|
||||||
|
static void handleplumb(Client *c, WebKitWebView *w, const gchar *uri);
|
||||||
|
|
||||||
static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
|
static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
|
||||||
|
|
||||||
static void inspector(Client *c, const Arg *arg);
|
static void inspector(Client *c, const Arg *arg);
|
||||||
|
@ -209,11 +211,19 @@ addaccelgroup(Client *c) {
|
||||||
static void
|
static void
|
||||||
beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r,
|
beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r,
|
||||||
WebKitNetworkRequest *req, WebKitNetworkResponse *resp,
|
WebKitNetworkRequest *req, WebKitNetworkResponse *resp,
|
||||||
gpointer d) {
|
Client *c) {
|
||||||
const gchar *uri = webkit_network_request_get_uri(req);
|
const gchar *uri = webkit_network_request_get_uri(req);
|
||||||
|
|
||||||
if(g_str_has_suffix(uri, "/favicon.ico"))
|
if(g_str_has_suffix(uri, "/favicon.ico"))
|
||||||
webkit_network_request_set_uri(req, "about:blank");
|
webkit_network_request_set_uri(req, "about:blank");
|
||||||
|
|
||||||
|
if(!g_str_has_prefix(uri, "http://") \
|
||||||
|
&& !g_str_has_prefix(uri, "https://") \
|
||||||
|
&& !g_str_has_prefix(uri, "about:") \
|
||||||
|
&& strlen(uri) > 0) {
|
||||||
|
printf("Handle plumb: %s\n", uri);
|
||||||
|
handleplumb(c, w, uri);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
|
@ -561,6 +571,15 @@ getstyle(const char *uri) {
|
||||||
return g_strdup("");
|
return g_strdup("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
handleplumb(Client *c, WebKitWebView *w, const gchar *uri) {
|
||||||
|
Arg arg;
|
||||||
|
|
||||||
|
webkit_web_view_stop_loading(w);
|
||||||
|
arg = (Arg)PLUMB((char *)uri);
|
||||||
|
spawn(c, &arg);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
initdownload(WebKitWebView *view, WebKitDownload *o, Client *c) {
|
initdownload(WebKitWebView *view, WebKitDownload *o, Client *c) {
|
||||||
Arg arg;
|
Arg arg;
|
||||||
|
|
Loading…
Reference in New Issue