Hello, Here is a searchengine patch for surf 0.2 (changed pasteuri() to geturi() as pasteuri() was alredy taken), and new toggleflash, saving another 1 LOC. Hope that will help someone. Constructive critisism welcome. Regards, Ted
-- =========================================================== () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments
diff -r ba69af3ca2c3 config.def.h --- a/config.def.h Sat Oct 17 09:23:28 2009 +0200 +++ b/config.def.h Mon Oct 19 12:23:10 2009 +0200 @@ -35,6 +35,10 @@ { 0, GDK_Return, hideuri, { 0 }, UriBar }, }; +static SearchEngine searchengines[] = { + { NULL, NULL }, +}; + static Item items[] = { { "New Window", newwindow, { .v = NULL } }, { "Reload", reload, { .b = FALSE } }, diff -r ba69af3ca2c3 surf.c --- a/surf.c Sat Oct 17 09:23:28 2009 +0200 +++ b/surf.c Mon Oct 19 12:23:10 2009 +0200 @@ -60,6 +60,11 @@ KeyFocus focus; } Key; +typedef struct { + char *token; + char *uri; +} SearchEngine; + static Display *dpy; static Atom uriprop; static SoupCookieJar *cookiejar; @@ -100,6 +105,7 @@ static void newwindow(Client *c, const Arg *arg); static WebKitWebView *createwindow(WebKitWebView *v, WebKitWebFrame *f, Client *c); static void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d); +static gchar *geturl(const gchar *uri); static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event, gpointer d); static void print(Client *c, const Arg *arg); static void progresschange(WebKitWebView *v, gint p, Client *c); @@ -408,6 +414,19 @@ update(c); } +gchar * +geturl(const gchar *uri) { + guint i; + for (i = 0; i < LENGTH(searchengines); i++) { + if (searchengines[i].token == NULL || searchengines[i].uri == NULL || *(uri + strlen(searchengines[i].token)) != ' ') + continue; + if(g_str_has_prefix(uri, searchengines[i].token)) + return g_strdup_printf(searchengines[i].uri, uri + strlen(searchengines[i].token) + 1); + } + return g_strrstr(uri, "://") ? g_strdup(uri) : g_strdup_printf("http://%s", uri); +} + + void loaduri(Client *c, const Arg *arg) { char *u; @@ -417,8 +436,7 @@ uri = autouri(c); if(!uri) return; - u = g_strrstr(uri, "://") ? g_strdup(uri) - : g_strdup_printf("http://%s", uri); + u = geturl(uri); webkit_web_view_load_uri(c->view, u); c->progress = 0; c->title = copystr(&c->title, u);
diff -r 18dd74d2564d config.def.h --- a/config.def.h Sat Oct 17 13:19:21 2009 +0200 +++ b/config.def.h Mon Oct 19 12:33:23 2009 +0200 @@ -18,6 +18,7 @@ { 0, GDK_Escape, hidesearch, { 0 }, Any }, { 0, GDK_Escape, hideuri, { 0 }, Any }, { MODKEY|GDK_SHIFT_MASK,GDK_p, print, { 0 }, Any }, + { MODKEY, GDK_f, toggleflash,{ 0 }, Any }, { MODKEY, GDK_p, clipboard, { .b = TRUE }, Browser }, { MODKEY, GDK_y, clipboard, { .b = FALSE }, Browser }, { MODKEY|GDK_SHIFT_MASK,GDK_j, zoom, { .i = -1 }, Browser }, diff -r 18dd74d2564d surf.c --- a/surf.c Sat Oct 17 13:19:21 2009 +0200 +++ b/surf.c Mon Oct 19 12:33:23 2009 +0200 @@ -116,6 +116,7 @@ static void showuri(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 toggleflash(Client *c, const Arg *arg); static gboolean focusview(GtkWidget *w, GdkEventFocus *e, Client *c); static void usage(void); static void update(Client *c); @@ -539,6 +540,7 @@ gdk_window_add_filter(GTK_WIDGET(c->win)->window, processx, c); webkit_web_view_set_full_content_zoom(c->view, TRUE); settings = webkit_web_view_get_settings(c->view); + g_object_set(G_OBJECT(settings), "enable-plugins", FALSE, NULL); g_object_set(G_OBJECT(settings), "user-agent", useragent, NULL); uri = g_strconcat("file://", stylefile, NULL); g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL); @@ -763,6 +765,14 @@ update(c); } +void +toggleflash(Client *c, const Arg *arg) { + static bool flash = 0; + WebKitWebSettings *settings; + settings = webkit_web_view_get_settings(c->view); + g_object_set(G_OBJECT(settings), "enable-plugins", (flash = !flash), NULL); +} + gboolean focusview(GtkWidget *w, GdkEventFocus *e, Client *c) { hidesearch(c, NULL);