Introduction
Introduction Statistics Contact Development Disclaimer Help
tfixing downloads based on Evan Gates' patch. - surf - customized build of surf…
git clone git://src.adamsgaard.dk/surf
Log
Files
Refs
README
LICENSE
---
commit a9d733bd9f8d4534ad06ff6467431803df8c7efd
parent 1d019cf8af6ffa2cd0f6d0bd9b6344e4924bb510
Author: Enno Boland (tox) <[email protected]>
Date: Tue, 27 Oct 2009 08:11:44 +0100
fixing downloads based on Evan Gates' patch.
Diffstat:
M config.def.h | 1 +
M surf.c | 46 ++++++++++++++++++++++++-----…
2 files changed, 37 insertions(+), 10 deletions(-)
---
diff --git a/config.def.h b/config.def.h
t@@ -42,4 +42,5 @@ static Item items[] = {
{ "Stop", stop, { 0 } },
{ "Paste URI", clipboard, { .b = TRUE } },
{ "Copy URI", clipboard, { .b = FALSE } },
+ { "Download", download, { 0 } },
};
diff --git a/surf.c b/surf.c
t@@ -76,7 +76,7 @@ static gboolean decidewindow(WebKitWebView *v, WebKitWebFram…
static void destroyclient(Client *c);
static void destroywin(GtkWidget* w, Client *c);
static void die(char *str);
-static void download(WebKitDownload *o, GParamSpec *pspec, Client *c);
+static void download(Client *c, const Arg *arg);
static void drawindicator(Client *c);
static gboolean exposeindicator(GtkWidget *w, GdkEventExpose *e, Client *c);
static char *geturi(Client *c);
t@@ -110,6 +110,7 @@ static void stop(Client *c, const Arg *arg);
static void titlechange(WebKitWebView *v, WebKitWebFrame* frame, const char* t…
static void usage(void);
static void update(Client *c);
+static void updatedownload(WebKitDownload *o, GParamSpec *pspec, Client *c);
static void updatewinid(Client *c);
static void windowobjectcleared(GtkWidget *w, WebKitWebFrame *frame, JSContext…
static void zoom(Client *c, const Arg *arg);
t@@ -232,6 +233,15 @@ destroyclient(Client *c) {
}
gboolean
+mime_policy_cb(WebKitWebView *web_view, WebKitWebFrame *frame, WebKitNetworkRe…
+ if(webkit_web_view_can_show_mime_type(web_view, mime_type))
+ webkit_web_policy_decision_use(policy_decision);
+ else
+ webkit_web_policy_decision_download(policy_decision);
+ return TRUE;
+}
+
+gboolean
decidewindow(WebKitWebView *view, WebKitWebFrame *f, WebKitNetworkRequest *r, …
Arg arg;
t@@ -285,14 +295,18 @@ exposeindicator(GtkWidget *w, GdkEventExpose *e, Client …
}
void
-download(WebKitDownload *o, GParamSpec *pspec, Client *c) {
- WebKitDownloadStatus status;
+download(Client *c, const Arg *arg) {
+ char *uri;
+ WebKitNetworkRequest *r;
+ WebKitDownload *dl;
- status = webkit_download_get_status(c->download);
- if(status == WEBKIT_DOWNLOAD_STATUS_STARTED || status == WEBKIT_DOWNLO…
- c->progress = (gint)(webkit_download_get_progress(c->download)…
- }
- update(c);
+ if(arg->v)
+ uri = (char *)arg->v;
+ else
+ uri = c->linkhover ? c->linkhover : geturi(c);
+ r = webkit_network_request_new(uri);
+ dl = webkit_download_new(r);
+ initdownload(c->view, dl, c);
}
const char *
t@@ -322,6 +336,8 @@ initdownload(WebKitWebView *view, WebKitDownload *o, Clien…
stop(c, NULL);
c->download = o;
filename = webkit_download_get_suggested_filename(o);
+ if(!strcmp("", filename))
+ filename = "index.html";
uri = g_strconcat("file://", dldir, "/", filename, NULL);
webkit_download_set_destination_uri(c->download, uri);
c->progress = 0;
t@@ -329,8 +345,8 @@ initdownload(WebKitWebView *view, WebKitDownload *o, Clien…
html = g_strdup_printf("Download <b>%s</b>...", filename);
webkit_web_view_load_html_string(c->view, html,
webkit_download_get_uri(c->download));
- g_signal_connect(c->download, "notify::progress", G_CALLBACK(download)…
- g_signal_connect(c->download, "notify::status", G_CALLBACK(download), …
+ g_signal_connect(c->download, "notify::progress", G_CALLBACK(updatedow…
+ g_signal_connect(c->download, "notify::status", G_CALLBACK(updatedownl…
webkit_download_start(c->download);
c->title = copystr(&c->title, filename);
t@@ -753,7 +769,17 @@ update(Client *c) {
drawindicator(c);
gtk_window_set_title(GTK_WINDOW(c->win), t);
g_free(t);
+}
+
+void
+updatedownload(WebKitDownload *o, GParamSpec *pspec, Client *c) {
+ WebKitDownloadStatus status;
+ status = webkit_download_get_status(c->download);
+ if(status == WEBKIT_DOWNLOAD_STATUS_STARTED || status == WEBKIT_DOWNLO…
+ c->progress = (gint)(webkit_download_get_progress(c->download)…
+ }
+ update(c);
}
void
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.