diff -BENbdpru old/config.h new/config.h --- old/config.h 1970-01-01 01:00:00.000000000 +0100 +++ new/config.h 2011-07-18 13:00:46.036056970 +0200 @@ -0,0 +1,40 @@ +/* modifier 0 means no modifier */ +static char *useragent = "Surf/"VERSION" (X11; U; Unix; en-US) AppleWebKit/531.2+ Compatible (Safari)"; +static char *progress = "#FF0000"; +static char *progress_trust = "#00FF00"; +static char *stylefile = ".surf/style.css"; +static char *scriptfile = ".surf/script.js"; +static char *cookiefile = ".surf/cookies.txt"; +static time_t sessiontime = 3600; +#define NOBACKGROUND 0 + +#define SETPROP(p, q) { .v = (char *[]){ "/bin/sh", "-c", \ + "prop=\"`xprop -id $2 $0 | cut -d '\"' -f 2 | dmenu`\" &&" \ + "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \ + p, q, winid, NULL } } +#define DOWNLOAD(d) { \ + .v = (char *[]){ "/bin/sh", "-c", \ + "xterm -e \"wget --load-cookies ~/.surf/cookies.txt '$0';\"", \ + d, NULL } } +#define MODKEY GDK_CONTROL_MASK +static Key keys[] = { + /* modifier keyval function arg Focus */ + { MODKEY|GDK_SHIFT_MASK,GDK_r, reload, { .b = TRUE } }, + { MODKEY, GDK_r, reload, { .b = FALSE } }, + { MODKEY|GDK_SHIFT_MASK,GDK_p, print, { 0 } }, + { MODKEY, GDK_p, clipboard, { .b = TRUE } }, + { MODKEY, GDK_y, clipboard, { .b = FALSE } }, + { MODKEY|GDK_SHIFT_MASK,GDK_j, zoom, { .i = -1 } }, + { MODKEY|GDK_SHIFT_MASK,GDK_k, zoom, { .i = +1 } }, + { MODKEY|GDK_SHIFT_MASK,GDK_i, zoom, { .i = 0 } }, + { MODKEY, GDK_l, navigate, { .i = +1 } }, + { MODKEY, GDK_h, navigate, { .i = -1 } }, + { MODKEY, GDK_j, scroll, { .i = +1 } }, + { MODKEY, GDK_k, scroll, { .i = -1 } }, + { 0, GDK_Escape, stop, { 0 } }, + { MODKEY, GDK_o, source, { 0 } }, + { MODKEY, GDK_g, spawn, SETPROP("_SURF_URI", "_SURF_GO") }, + { MODKEY, GDK_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") }, + { MODKEY, GDK_n, find, { .b = TRUE } }, + { MODKEY|GDK_SHIFT_MASK,GDK_n, find, { .b = FALSE } }, +}; diff -BENbdpru old/surf.c new/surf.c --- old/surf.c 2010-06-08 09:06:42.000000000 +0200 +++ new/surf.c 2011-07-18 13:24:38.596056732 +0200 @@ -81,7 +81,9 @@ static const char *getatom(Client *c, in static const char *getcookies(SoupURI *uri); static char *geturi(Client *c); void gotheaders(SoupMessage *msg, gpointer user_data); +void hide_window(GtkWidget *widget, gpointer data); static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c); +static WebKitWebView* inspect(WebKitWebInspector *web_inspector, WebKitWebView *web_view, gpointer user_data); static gboolean keypress(GtkWidget *w, GdkEventKey *ev, Client *c); static void linkhover(WebKitWebView *v, const char* t, const char* l, Client *c); static void loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c); @@ -100,6 +102,7 @@ static void scroll(Client *c, const Arg static void setatom(Client *c, int a, const char *v); static void setcookie(SoupCookie *c); static void setup(void); +static gboolean show_inspect_window(WebKitWebInspector *web_inspector, gpointer user_data); static void sigchld(int unused); static void source(Client *c, const Arg *arg); static void spawn(Client *c, const Arg *arg); @@ -326,6 +329,12 @@ gotheaders(SoupMessage *msg, gpointer v) soup_cookies_free(l); } +void +hide_window(GtkWidget *widget, gpointer data) { + (void) data; + gtk_widget_hide(widget); +} + gboolean initdownload(WebKitWebView *view, WebKitDownload *o, Client *c) { Arg arg; @@ -336,6 +345,33 @@ initdownload(WebKitWebView *view, WebKit return FALSE; } +WebKitWebView* +inspect(WebKitWebInspector *web_inspector, WebKitWebView *web_view, gpointer user_data) { + (void) user_data; + (void) web_view; + (void) web_inspector; + GtkWidget* scrolled_window; + GtkWidget* new_web_view; + GtkWidget* inspector_window; + + inspector_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + g_signal_connect(G_OBJECT(inspector_window), "delete-event", G_CALLBACK(hide_window), NULL); + + gtk_window_set_title(GTK_WINDOW(inspector_window), "WebInspector"); + gtk_window_set_default_size(GTK_WINDOW(inspector_window), 400, 300); + gtk_widget_show(inspector_window); + + scrolled_window = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add(GTK_CONTAINER(inspector_window), scrolled_window); + gtk_widget_show(scrolled_window); + + new_web_view = webkit_web_view_new(); + gtk_container_add(GTK_CONTAINER(scrolled_window), new_web_view); + + return WEBKIT_WEB_VIEW(new_web_view); +} + gboolean keypress(GtkWidget* w, GdkEventKey *ev, Client *c) { guint i; @@ -501,6 +537,13 @@ newclient(void) { g_object_set(G_OBJECT(settings), "enable-plugins", plugin, NULL); g_object_set(G_OBJECT(settings), "enable-scripts", script, NULL); g_object_set(G_OBJECT(settings), "enable-spatial-navigation", true, NULL); + g_object_set(G_OBJECT(settings), "enable-developer-extras", true, NULL); + + /* WebInspector */ + WebKitWebInspector *inspector = webkit_web_view_get_inspector(WEBKIT_WEB_VIEW(c->view)); + g_signal_connect(G_OBJECT (inspector), "inspect-web-view", G_CALLBACK(inspect), NULL); + g_signal_connect(G_OBJECT (inspector), "show-window", G_CALLBACK(show_inspect_window), NULL); + /*g_signal_connect(G_OBJECT (inspector), "notify::inspected-uri", G_CALLBACK(inspected_uri_changed_do_stuff), NULL);*/ g_free(uri); @@ -709,6 +752,12 @@ setup(void) { } } +gboolean +show_inspect_window(WebKitWebInspector *web_inspector, gpointer user_data) { + webkit_web_inspector_show(web_inspector); + return TRUE; +} + void sigchld(int unused) { if(signal(SIGCHLD, sigchld) == SIG_ERR)