Script text shouldn't go through formatted conversion
[surf.git] / surf.c
diff --git a/surf.c b/surf.c
index 61448fb..f01a91c 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -79,6 +79,7 @@ typedef enum {
        SpellLanguages,
        StrictTLS,
        Style,
+       WebGL,
        ZoomLevel,
        ParameterLast
 } ParamName;
@@ -241,6 +242,7 @@ static GdkDevice *gdkkb;
 static char *stylefile;
 static const char *useragent;
 static Parameter *curconfig;
+static int modparams[ParameterLast];
 char *argv0;
 
 static ParamName loadtransient[] = {
@@ -673,41 +675,31 @@ cookiepolicy_set(const WebKitCookieAcceptPolicy p)
 void
 seturiparameters(Client *c, const char *uri, ParamName *params)
 {
-       Parameter *config, *newconfig = NULL;
+       Parameter *config, *uriconfig = NULL;
        int i, p;
 
        for (i = 0; i < LENGTH(uriparams); ++i) {
                if (uriparams[i].uri &&
                    !regexec(&(uriparams[i].re), uri, 0, NULL, 0)) {
-                       newconfig = uriparams[i].config;
+                       uriconfig = uriparams[i].config;
                        break;
                }
        }
 
-       if (!newconfig)
-               newconfig = defconfig;
+       curconfig = uriconfig ? uriconfig : defconfig;
 
        for (i = 0; (p = params[i]) != ParameterLast; ++i) {
                switch(p) {
+               default: /* FALLTHROUGH */
+                       if (!(defconfig[p].prio < curconfig[p].prio ||
+                           defconfig[p].prio < modparams[p]))
+                               continue;
                case Certificate:
                case CookiePolicies:
                case Style:
-                       config = (newconfig[p].prio > defconfig[p].prio) ?
-                                newconfig : defconfig;
-                       break;
-               default:
-                       if (newconfig[p].prio > defconfig[p].prio)
-                               config = newconfig;
-                       else if (curconfig[p].prio > defconfig[p].prio)
-                               config = defconfig;
-                       else
-                               continue;
+                       setparameter(c, 0, p, &curconfig[p].val);
                }
-
-               setparameter(c, 0, p, &config[p].val);
        }
-
-       curconfig = newconfig;
 }
 
 void
@@ -716,6 +708,8 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
        GdkRGBA bgcolor = { 0 };
        WebKitSettings *s = webkit_web_view_get_settings(c->view);
 
+       modparams[p] = curconfig[p].prio;
+
        switch (p) {
        case AcceleratedCanvas:
                webkit_settings_set_enable_accelerated_2d_canvas(s, a->i);
@@ -827,6 +821,9 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
                        setstyle(c, getstyle(geturi(c)));
                refresh = 0;
                break;
+       case WebGL:
+               webkit_settings_set_enable_webgl(s, a->i);
+               break;
        case ZoomLevel:
                webkit_web_view_set_zoom_level(c->view, a->f);
                return; /* do not update */
@@ -924,7 +921,7 @@ runscript(Client *c)
        gsize l;
 
        if (g_file_get_contents(scriptfile, &script, &l, NULL) && l)
-               evalscript(c, script);
+               evalscript(c, "%s", script);
        g_free(script);
 }
 
@@ -1086,6 +1083,7 @@ newview(Client *c, WebKitWebView *rv)
                   "enable-accelerated-2d-canvas", curconfig[AcceleratedCanvas].val.i,
                   "enable-site-specific-quirks", curconfig[SiteQuirks].val.i,
                   "enable-smooth-scrolling", curconfig[SmoothScrolling].val.i,
+                  "enable-webgl", curconfig[WebGL].val.i,
                   "media-playback-requires-user-gesture", curconfig[MediaManualPlay].val.i,
                   NULL);
 /* For more interesting settings, have a look at