Importing the generic toggle patch of stanio@cs.tu-berlin.de. Thanks!
[surf.git] / surf.c
diff --git a/surf.c b/surf.c
index 3b291b5..7fa0eb6 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -126,6 +126,7 @@ 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 toggle(Client *c, const Arg *arg);
 static void update(Client *c);
 static void updatewinid(Client *c);
 static void usage(void);
@@ -453,8 +454,7 @@ void
 linkhover(WebKitWebView *v, const char* t, const char* l, Client *c) {
        if(l) {
                c->linkhover = copystr(&c->linkhover, l);
-       }
-       else if(c->linkhover) {
+       } else if(c->linkhover) {
                free(c->linkhover);
                c->linkhover = NULL;
        }
@@ -504,8 +504,7 @@ loaduri(Client *c, const Arg *arg) {
        /* prevents endless loop */
        if(c->uri && strcmp(u, c->uri) == 0) {
                reload(c, &a);
-       }
-       else {
+       } else {
                webkit_web_view_load_uri(c->view, u);
                c->progress = 0;
                c->title = copystr(&c->title, u);
@@ -891,6 +890,20 @@ titlechange(WebKitWebView *v, WebKitWebFrame *f, const char *t, Client *c) {
        update(c);
 }
 
+void
+toggle(Client *c, const Arg *arg) { 
+  WebKitWebSettings *settings;
+  char *name = (char *)arg->v;
+  gboolean value;
+  Arg a = { .b = FALSE };
+
+  settings = webkit_web_view_get_settings(c->view);
+  g_object_get(G_OBJECT(settings), name, &value, NULL);
+  g_object_set(G_OBJECT(settings), name, !value, NULL);
+
+  reload(c,&a);
+}
+
 void
 update(Client *c) {
        char *t;
@@ -905,6 +918,7 @@ update(Client *c) {
                gtk_widget_hide_all(c->indicator);
                t = g_strdup(c->title);
        }
+
        gtk_window_set_title(GTK_WINDOW(c->win), t);
        g_free(t);
 }
@@ -919,7 +933,7 @@ void
 usage(void) {
        fputs("surf - simple browser\n", stderr);
        die("usage: surf [-c cookiefile] [-e xid] [-i] [-p] [-r scriptfile]"
-               " [-s] [-t stylefile] [-v] [-x] [uri]\n");
+               " [-s] [-t stylefile] [-u useragent] [-v] [-x] [uri]\n");
 }
 
 void
@@ -944,6 +958,8 @@ int
 main(int argc, char *argv[]) {
        Arg arg;
 
+       memset(&arg, 0, sizeof(arg));
+
        /* command line args */
        ARGBEGIN {
        case 'c':
@@ -967,6 +983,9 @@ main(int argc, char *argv[]) {
        case 't':
                stylefile = EARGF(usage());
                break;
+       case 'u':
+               useragent = EARGF(usage());
+               break;
        case 'x':
                showxid = TRUE;
                break;
@@ -982,6 +1001,7 @@ main(int argc, char *argv[]) {
        newclient();
        if(arg.v)
                loaduri(clients, &arg);
+
        gtk_main();
        cleanup();