#include <sys/file.h>
#define LENGTH(x) (sizeof x / sizeof x[0])
-#define CLEANMASK(mask) (mask & ~(GDK_MOD2_MASK))
enum { AtomFind, AtomGo, AtomUri, AtomLast };
static void sigchld(int unused);
static void source(Client *c, const Arg *arg);
static void spawn(Client *c, const Arg *arg);
+static void eval(Client *c, const Arg *arg);
static void stop(Client *c, const Arg *arg);
static void titlechange(WebKitWebView *v, WebKitWebFrame* frame, const char* title, Client *c);
static void update(Client *c);
g_free(stylefile);
}
+void
+evalscript(WebKitWebFrame *frame, JSContextRef js, char *script, char* scriptname) {
+ JSStringRef jsscript, jsscriptname;
+ JSValueRef exception = NULL;
+
+ jsscript = JSStringCreateWithUTF8CString(script);
+ jsscriptname = JSStringCreateWithUTF8CString(scriptname);
+ JSEvaluateScript(js, jsscript, JSContextGetGlobalObject(js), jsscriptname, 0, &exception);
+ JSStringRelease(jsscript);
+ JSStringRelease(jsscriptname);
+}
+
void
runscript(WebKitWebFrame *frame, JSContextRef js) {
- JSStringRef jsscript;
char *script;
- JSValueRef exception = NULL;
GError *error;
-
+
if(g_file_get_contents(scriptfile, &script, NULL, &error)) {
- jsscript = JSStringCreateWithUTF8CString(script);
- JSEvaluateScript(js, jsscript, JSContextGetGlobalObject(js), NULL, 0, &exception);
+ evalscript(frame, webkit_web_frame_get_global_context(frame), script, scriptfile);
}
}
updatewinid(c);
for(i = 0; i < LENGTH(keys); i++) {
if(gdk_keyval_to_lower(ev->keyval) == keys[i].keyval
- && CLEANMASK(ev->state) == keys[i].mod
+ && (ev->state & keys[i].mod) == keys[i].mod
&& keys[i].func) {
keys[i].func(c, &(keys[i].arg));
processed = TRUE;
setatom(c, AtomFind, "");
setatom(c, AtomUri, "about:blank");
- if(NOBACKGROUND)
+ if(HIDE_BACKGROUND)
webkit_web_view_set_transparent(c->view, TRUE);
c->title = NULL;
}
}
+void
+eval(Client *c, const Arg *arg) {
+ WebKitWebFrame *frame = webkit_web_view_get_main_frame(c->view);
+ evalscript(frame, webkit_web_frame_get_global_context(frame), ((char **)arg->v)[0], "");
+}
+
void
stop(Client *c, const Arg *arg) {
webkit_web_view_stop_loading(c->view);