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);