tadding user.js support. - surf - customized build of surf, the suckless webkit… | |
git clone git://src.adamsgaard.dk/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit e9d4da3030f534d1a6a6882a642de4fb12fe4941 | |
parent 0e3ac7f3b0c6bb944202ba0eea258c6c9bb05638 | |
Author: Enno Boland (tox) <[email protected]> | |
Date: Wed, 16 Sep 2009 10:06:21 +0200 | |
adding user.js support. | |
Diffstat: | |
M surf.c | 26 ++++++++++++++++++++++---- | |
1 file changed, 22 insertions(+), 4 deletions(-) | |
--- | |
diff --git a/surf.c b/surf.c | |
t@@ -15,12 +15,11 @@ | |
#include <stdio.h> | |
#include <webkit/webkit.h> | |
#include <glib/gstdio.h> | |
+#include <JavaScriptCore/JavaScript.h> | |
#define LENGTH(x) (sizeof x / sizeof x[0]) | |
#define CLEANMASK(mask) (mask & ~(GDK_MOD2_MASK)) | |
-Display *dpy; | |
-Atom urlprop; | |
typedef union Arg Arg; | |
union Arg { | |
const gboolean b; | |
t@@ -60,6 +59,8 @@ typedef struct { | |
KeyFocus focus; | |
} Key; | |
+static Display *dpy; | |
+static Atom urlprop; | |
static SoupCookieJar *cookiejar; | |
static SoupSession *session; | |
static Client *clients = NULL; | |
t@@ -115,6 +116,7 @@ static void titlechange(WebKitWebView* view, WebKitWebFram… | |
static gboolean unfocusbar(GtkWidget *w, GdkEventFocus *e, Client *c); | |
static void usage(void); | |
static void update(Client *c); | |
+static void windowobjectcleared(GtkWidget *w, WebKitWebFrame *frame, JSContext… | |
static void zoom(Client *c, const Arg *arg); | |
#include "config.h" | |
t@@ -408,6 +410,7 @@ newclient(void) { | |
g_signal_connect(G_OBJECT(c->view), "hovering-over-link", G_CALLBACK(l… | |
g_signal_connect(G_OBJECT(c->view), "create-web-view", G_CALLBACK(neww… | |
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_after(session, "request-started", G_CALLBACK(request)… | |
/* urlbar */ | |
t@@ -426,8 +429,6 @@ newclient(void) { | |
g_signal_connect (G_OBJECT (c->indicator), "expose_event", | |
G_CALLBACK (exposeindicator), c); | |
- /* downloadbar */ | |
- | |
/* Arranging */ | |
gtk_container_add(GTK_CONTAINER(c->scroll), GTK_WIDGET(c->view)); | |
gtk_container_add(GTK_CONTAINER(c->win), c->vbox); | |
t@@ -688,6 +689,23 @@ update(Client *c) { | |
} | |
void | |
+windowobjectcleared(GtkWidget *w, WebKitWebFrame *frame, JSContextRef js, JSOb… | |
+ JSStringRef jsscript; | |
+ gchar *script, *filename; | |
+ JSValueRef exception = NULL; | |
+ GError *error; | |
+ | |
+ filename = g_build_filename(workdir, "script.js", NULL); | |
+ if(g_file_get_contents(filename, &script, NULL, &error)) { | |
+ script = g_strdup_printf("window.addEventListener" | |
+ "('DOMContentLoaded', function () { %s }, true… | |
+ script); | |
+ jsscript = JSStringCreateWithUTF8CString (script); | |
+ JSEvaluateScript (js, jsscript, JSContextGetGlobalObject(js), … | |
+ } | |
+} | |
+ | |
+void | |
zoom(Client *c, const Arg *arg) { | |
if(arg->i < 0) /* zoom out */ | |
webkit_web_view_zoom_out(c->view); |