| tremoving context-menu, downloading. - surf - customized build of surf, the suc… | |
| git clone git://src.adamsgaard.dk/surf | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 6376a30379d9a130f01a37b188b8005ed7d05a9d | |
| parent 91d04b15f0bb16d5b31ad92ea1e6a0066e589956 | |
| Author: Enno Boland (tox) <[email protected]> | |
| Date: Mon, 17 May 2010 10:58:08 +0200 | |
| removing context-menu, downloading. | |
| Diffstat: | |
| M config.def.h | 11 ----------- | |
| M surf.c | 119 +++--------------------------… | |
| 2 files changed, 8 insertions(+), 122 deletions(-) | |
| --- | |
| diff --git a/config.def.h b/config.def.h | |
| t@@ -35,14 +35,3 @@ static Key keys[] = { | |
| { MODKEY, GDK_n, find, { .b = TRUE } }, | |
| { MODKEY|GDK_SHIFT_MASK,GDK_n, find, { .b = FALSE } }, | |
| }; | |
| - | |
| -static Item items[] = { | |
| - { "Back", navigate, { .i = -1 } }, | |
| - { "Forward", navigate, { .i = +1 } }, | |
| - { "New Window", newwindow, { .v = NULL } }, | |
| - { "Reload", reload, { .b = FALSE } }, | |
| - { "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@@ -32,9 +32,7 @@ union Arg { | |
| typedef struct Client { | |
| GtkWidget *win, *scroll, *vbox, *indicator; | |
| - GtkWidget **items; | |
| WebKitWebView *view; | |
| - WebKitDownload *download; | |
| char *title, *linkhover; | |
| const char *uri, *needle; | |
| gint progress; | |
| t@@ -68,7 +66,6 @@ static gboolean loadimage = 1, plugin = 1, script = 1; | |
| static char *buildpath(const char *path); | |
| static void cleanup(void); | |
| static void clipboard(Client *c, const Arg *arg); | |
| -static void context(WebKitWebView *v, GtkMenu *m, Client *c); | |
| static char *copystr(char **str, const char *src); | |
| static WebKitWebView *createwindow(WebKitWebView *v, WebKitWebFrame *f, Client… | |
| static gboolean decidedownload(WebKitWebView *v, WebKitWebFrame *f, WebKitNetw… | |
| t@@ -76,7 +73,6 @@ 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(Client *c, const Arg *arg); | |
| static void drawindicator(Client *c); | |
| static gboolean exposeindicator(GtkWidget *w, GdkEventExpose *e, Client *c); | |
| static void find(Client *c, const Arg *arg); | |
| t@@ -84,8 +80,6 @@ static const char *getatom(Client *c, Atom a); | |
| static const char *getcookies(SoupURI *uri); | |
| static char *geturi(Client *c); | |
| void gotheaders(SoupMessage *msg, gpointer user_data); | |
| -static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c); | |
| -static void itemclick(GtkMenuItem *mi, Client *c); | |
| static gboolean keypress(GtkWidget *w, GdkEventKey *ev, Client *c); | |
| static void linkhover(WebKitWebView *v, const char* t, const char* l, Client *… | |
| static void loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c… | |
| t@@ -110,7 +104,6 @@ static void spawn(Client *c, const Arg *arg); | |
| static void stop(Client *c, const Arg *arg); | |
| static void titlechange(WebKitWebView *v, WebKitWebFrame* frame, const char* t… | |
| static void update(Client *c); | |
| -static void updatedownload(WebKitDownload *o, GParamSpec *pspec, Client *c); | |
| static void updatewinid(Client *c); | |
| static void usage(void); | |
| static void windowobjectcleared(GtkWidget *w, WebKitWebFrame *frame, JSContext… | |
| t@@ -173,22 +166,6 @@ clipboard(Client *c, const Arg *arg) { | |
| gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_PRIMARY… | |
| } | |
| -void | |
| -context(WebKitWebView *v, GtkMenu *m, Client *c) { | |
| - int i; | |
| - GtkContainer *parent; | |
| - | |
| - gtk_widget_hide_all(GTK_WIDGET(m)); | |
| - gtk_widget_show(GTK_WIDGET(m)); | |
| - for(i = 0; i < LENGTH(items); i++) { | |
| - parent = GTK_CONTAINER(gtk_widget_get_parent(c->items[i])); | |
| - if(parent) | |
| - gtk_container_remove(parent, c->items[i]); | |
| - gtk_menu_shell_append(GTK_MENU_SHELL(m), c->items[i]); | |
| - gtk_widget_show(c->items[i]); | |
| - } | |
| -} | |
| - | |
| char * | |
| copystr(char **str, const char *src) { | |
| char *tmp; | |
| t@@ -210,7 +187,10 @@ createwindow(WebKitWebView *v, WebKitWebFrame *f, Client… | |
| gboolean | |
| decidedownload(WebKitWebView *v, WebKitWebFrame *f, WebKitNetworkRequest *r, g… | |
| if(!webkit_web_view_can_show_mime_type(v, m)) { | |
| - webkit_web_policy_decision_download(p); | |
| + webkit_web_policy_decision_ignore(p); | |
| + webkit_web_view_load_html_string(c->view, | |
| + "Can't display content.", | |
| + webkit_network_request_get_uri(r)); | |
| return TRUE; | |
| } | |
| return FALSE; | |
| t@@ -231,7 +211,6 @@ decidewindow(WebKitWebView *view, WebKitWebFrame *f, WebKi… | |
| void | |
| destroyclient(Client *c) { | |
| - int i; | |
| Client *p; | |
| gtk_widget_destroy(c->indicator); | |
| t@@ -239,9 +218,6 @@ destroyclient(Client *c) { | |
| gtk_widget_destroy(c->scroll); | |
| gtk_widget_destroy(c->vbox); | |
| gtk_widget_destroy(c->win); | |
| - for(i = 0; i < LENGTH(items); i++) | |
| - gtk_widget_destroy(c->items[i]); | |
| - free(c->items); | |
| for(p = clients; p && p->next != c; p = p->next); | |
| if(p) | |
| t@@ -265,22 +241,6 @@ die(char *str) { | |
| } | |
| void | |
| -download(Client *c, const Arg *arg) { | |
| - char *uri; | |
| - WebKitNetworkRequest *r; | |
| - WebKitDownload *dl; | |
| - | |
| - 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); | |
| - webkit_download_start(c->download); | |
| -} | |
| - | |
| -void | |
| drawindicator(Client *c) { | |
| gint width; | |
| const char *uri; | |
| t@@ -369,37 +329,6 @@ gotheaders(SoupMessage *msg, gpointer v) { | |
| } | |
| gboolean | |
| -initdownload(WebKitWebView *view, WebKitDownload *o, Client *c) { | |
| - const char *filename; | |
| - char *uri; | |
| - | |
| - 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; | |
| - g_signal_connect(c->download, "notify::progress", G_CALLBACK(updatedow… | |
| - g_signal_connect(c->download, "notify::status", G_CALLBACK(updatedownl… | |
| - | |
| - c->title = copystr(&c->title, filename); | |
| - update(c); | |
| - return TRUE; | |
| -} | |
| - | |
| -void | |
| -itemclick(GtkMenuItem *mi, Client *c) { | |
| - int i; | |
| - const char *label; | |
| - | |
| - label = gtk_menu_item_get_label(mi); | |
| - for(i = 0; i < LENGTH(items); i++) | |
| - if(!strcmp(items[i].label, label)) | |
| - items[i].func(c, &(items[i].arg)); | |
| -} | |
| - | |
| -gboolean | |
| keypress(GtkWidget* w, GdkEventKey *ev, Client *c) { | |
| guint i; | |
| gboolean processed = FALSE; | |
| t@@ -418,8 +347,9 @@ keypress(GtkWidget* w, GdkEventKey *ev, Client *c) { | |
| void | |
| linkhover(WebKitWebView *v, const char* t, const char* l, Client *c) { | |
| - if(l) | |
| + if(l) { | |
| c->linkhover = copystr(&c->linkhover, l); | |
| + } | |
| else if(c->linkhover) { | |
| free(c->linkhover); | |
| c->linkhover = NULL; | |
| t@@ -431,9 +361,7 @@ void | |
| loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c) { | |
| switch(webkit_web_view_get_load_status (c->view)) { | |
| case WEBKIT_LOAD_COMMITTED: | |
| - if(c->download) | |
| - stop(c, NULL); | |
| - setatom(c, uriprop, geturi(c)); | |
| + setatom(c, uriprop, geturi(c)); | |
| break; | |
| case WEBKIT_LOAD_FINISHED: | |
| c->progress = 0; | |
| t@@ -475,7 +403,6 @@ navigate(Client *c, const Arg *arg) { | |
| Client * | |
| newclient(void) { | |
| - int i; | |
| Client *c; | |
| WebKitWebSettings *settings; | |
| WebKitWebFrame *frame; | |
| t@@ -509,16 +436,6 @@ newclient(void) { | |
| g_signal_connect(G_OBJECT(c->win), "key-press-event", G_CALLBACK(keypr… | |
| g_signal_connect(G_OBJECT(c->win), "size-allocate", G_CALLBACK(resize)… | |
| - if(!(c->items = calloc(1, sizeof(GtkWidget *) * LENGTH(items)))) | |
| - die("Cannot malloc!\n"); | |
| - | |
| - /* contextmenu */ | |
| - for(i = 0; i < LENGTH(items); i++) { | |
| - c->items[i] = gtk_menu_item_new_with_label(items[i].label); | |
| - g_signal_connect(G_OBJECT(c->items[i]), "activate", | |
| - G_CALLBACK(itemclick), c); | |
| - } | |
| - | |
| /* VBox */ | |
| c->vbox = gtk_vbox_new(FALSE, 0); | |
| t@@ -534,9 +451,7 @@ newclient(void) { | |
| g_signal_connect(G_OBJECT(c->view), "create-web-view", G_CALLBACK(crea… | |
| g_signal_connect(G_OBJECT(c->view), "new-window-policy-decision-reques… | |
| g_signal_connect(G_OBJECT(c->view), "mime-type-policy-decision-request… | |
| - g_signal_connect(G_OBJECT(c->view), "download-requested", G_CALLBACK(i… | |
| g_signal_connect(G_OBJECT(c->view), "window-object-cleared", G_CALLBAC… | |
| - g_signal_connect(G_OBJECT(c->view), "populate-popup", G_CALLBACK(conte… | |
| g_signal_connect(G_OBJECT(c->view), "notify::load-status", G_CALLBACK(… | |
| g_signal_connect(G_OBJECT(c->view), "notify::progress", G_CALLBACK(pro… | |
| t@@ -582,7 +497,6 @@ newclient(void) { | |
| if(NOBACKGROUND) | |
| webkit_web_view_set_transparent(c->view, TRUE); | |
| - c->download = NULL; | |
| c->title = NULL; | |
| c->next = clients; | |
| clients = c; | |
| t@@ -816,11 +730,7 @@ spawn(Client *c, const Arg *arg) { | |
| void | |
| stop(Client *c, const Arg *arg) { | |
| - if(c->download) | |
| - webkit_download_cancel(c->download); | |
| - else | |
| - webkit_web_view_stop_loading(c->view); | |
| - c->download = NULL; | |
| + webkit_web_view_stop_loading(c->view); | |
| } | |
| void | |
| t@@ -845,19 +755,6 @@ update(Client *c) { | |
| } | |
| 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)… | |
| - } | |
| - else | |
| - stop(c, NULL); | |
| - update(c); | |
| -} | |
| - | |
| -void | |
| updatewinid(Client *c) { | |
| snprintf(winid, LENGTH(winid), "%u", | |
| (int)GDK_WINDOW_XID(GTK_WIDGET(c->win)->window)); |