tAdapting the whole surf structure to new settings - surf - customized build of… | |
git clone git://src.adamsgaard.dk/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 75e3fe5b95bc94d5309bd78d9cc98f0034595c3e | |
parent 11b34c08146928754ade63b285ba861f0be6a416 | |
Author: Quentin Rameau <[email protected]> | |
Date: Sun, 29 Nov 2015 17:42:42 +0100 | |
Adapting the whole surf structure to new settings | |
Diffstat: | |
M config.def.h | 1 - | |
M surf.c | 387 +++++++++++++++++++----------… | |
2 files changed, 233 insertions(+), 155 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -139,7 +139,6 @@ static Key keys[] = { | |
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_a, togglecookiepolicy, { 0 } }, | |
{ 0, GDK_KEY_F11, togglefullscreen, { 0 } }, | |
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_o, toggleinspector, { 0 } }, | |
- { MODKEY|GDK_SHIFT_MASK, GDK_KEY_m, togglestyle, { 0 } }, | |
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_c, toggle, { .i = CaretBrows… | |
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_f, toggle, { .i = FrameFlatt… | |
diff --git a/surf.c b/surf.c | |
t@@ -42,6 +42,17 @@ | |
enum { AtomFind, AtomGo, AtomUri, AtomLast }; | |
+enum { | |
+ OnDoc = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT, | |
+ OnLink = WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK, | |
+ OnImg = WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE, | |
+ OnMedia = WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA, | |
+ OnEdit = WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE, | |
+ OnBar = WEBKIT_HIT_TEST_RESULT_CONTEXT_SCROLLBAR, | |
+ OnSel = WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION, | |
+ OnAny = OnDoc | OnLink | OnImg | OnMedia | OnEdit | OnBar | OnSel, | |
+}; | |
+ | |
typedef enum { | |
CaretBrowsing, | |
CookiePolicies, | |
t@@ -68,17 +79,6 @@ typedef enum { | |
ParameterLast, | |
} ParamName; | |
-enum { | |
- OnDoc = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT, | |
- OnLink = WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK, | |
- OnImg = WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE, | |
- OnMedia = WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA, | |
- OnEdit = WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE, | |
- OnBar = WEBKIT_HIT_TEST_RESULT_CONTEXT_SCROLLBAR, | |
- OnSel = WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION, | |
- OnAny = OnDoc | OnLink | OnImg | OnMedia | OnEdit | OnBar | OnSel, | |
-}; | |
- | |
typedef union { | |
int b; | |
int i; | |
t@@ -150,6 +150,8 @@ static void gettogglestats(Client *c); | |
static void getpagestats(Client *c); | |
static WebKitCookieAcceptPolicy cookiepolicy_get(void); | |
static char cookiepolicy_set(const WebKitCookieAcceptPolicy p); | |
+static void seturiparameters(Client *c, const char *uri); | |
+static void setparameter(Client *c, int refresh, ParamName p, const Arg *a); | |
static const char *getstyle(const char *uri); | |
static void setstyle(Client *c, const char *stylefile); | |
static void runscript(Client *c); | |
t@@ -203,7 +205,6 @@ static void stop(Client *c, const Arg *a); | |
static void toggle(Client *c, const Arg *a); | |
static void togglefullscreen(Client *c, const Arg *a); | |
static void togglecookiepolicy(Client *c, const Arg *a); | |
-static void togglestyle(Client *c, const Arg *a); | |
static void toggleinspector(Client *c, const Arg *a); | |
static void find(Client *c, const Arg *a); | |
t@@ -224,6 +225,7 @@ static Client *clients; | |
static GdkDevice *gdkkb; | |
static char *stylefile; | |
static const char *useragent; | |
+static Parameter *curconfig; | |
char *argv0; | |
/* configuration, allows nested code to access above variables */ | |
t@@ -251,7 +253,7 @@ die(const char *errstr, ...) | |
void | |
setup(void) | |
{ | |
- int i; | |
+ int i, j; | |
/* clean up any zombies immediately */ | |
sigchld(0); | |
t@@ -259,6 +261,8 @@ setup(void) | |
dpy = GDK_DISPLAY_XDISPLAY(gdk_display_get_default()); | |
+ curconfig = defconfig; | |
+ | |
/* atoms */ | |
atoms[AtomFind] = XInternAtom(dpy, "_SURF_FIND", False); | |
atoms[AtomGo] = XInternAtom(dpy, "_SURF_GO", False); | |
t@@ -288,6 +292,24 @@ setup(void) | |
} else { | |
stylefile = buildfile(stylefile); | |
} | |
+ | |
+ for (i = 0; i < LENGTH(uriparams); ++i) { | |
+ if (!regcomp(&(uriparams[i].re), uriparams[i].uri, | |
+ REG_EXTENDED)) { | |
+ /* copy default parameters if they are not already set | |
+ * or if they are forced */ | |
+ for (j = 0; j < ParameterLast; ++j) { | |
+ if (!uriparams[i].config[j].force || | |
+ defconfig[j].force) | |
+ uriparams[i].config[j] = defconfig[j]; | |
+ } | |
+ } else { | |
+ fprintf(stderr, | |
+ "Could not compile regex: %s\n", | |
+ uriparams[i].uri); | |
+ uriparams[i].uri = NULL; | |
+ } | |
+ } | |
} | |
void | |
t@@ -456,7 +478,7 @@ updatetitle(Client *c) | |
const char *name = c->overtitle ? c->overtitle : | |
c->title ? c->title : ""; | |
- if (showindicators) { | |
+ if (curconfig[ShowIndicators].val.b) { | |
gettogglestats(c); | |
getpagestats(c); | |
t@@ -478,14 +500,14 @@ void | |
gettogglestats(Client *c) | |
{ | |
togglestats[0] = cookiepolicy_set(cookiepolicy_get()); | |
- togglestats[1] = enablecaretbrowsing ? 'C' : 'c'; | |
- togglestats[2] = allowgeolocation ? 'G' : 'g'; | |
- togglestats[3] = enablecache ? 'D' : 'd'; | |
- togglestats[4] = loadimages ? 'I' : 'i'; | |
- togglestats[5] = enablescripts ? 'S' : 's'; | |
- togglestats[6] = enableplugins ? 'V' : 'v'; | |
- togglestats[7] = enablestyle ? 'M' : 'm'; | |
- togglestats[8] = enableframeflattening ? 'F' : 'f'; | |
+ togglestats[1] = curconfig[CaretBrowsing].val.b ? 'C' : 'c'; | |
+ togglestats[2] = curconfig[Geolocation].val.b ? 'G' : 'g'; | |
+ togglestats[3] = curconfig[DiskCache].val.b ? 'D' : 'd'; | |
+ togglestats[4] = curconfig[LoadImages].val.b ? 'I' : 'i'; | |
+ togglestats[5] = curconfig[JavaScript].val.b ? 'S' : 's'; | |
+ togglestats[6] = curconfig[Plugins].val.b ? 'V' : 'v'; | |
+ togglestats[7] = curconfig[Style].val.b ? 'M' : 'm'; | |
+ togglestats[8] = curconfig[FrameFlattening].val.b ? 'F' : 'f'; | |
togglestats[9] = '\0'; | |
} | |
t@@ -500,7 +522,7 @@ getpagestats(Client *c) | |
WebKitCookieAcceptPolicy | |
cookiepolicy_get(void) | |
{ | |
- switch (cookiepolicies[cookiepolicy]) { | |
+ switch (((char *)curconfig[CookiePolicies].val.v)[cookiepolicy]) { | |
case 'a': | |
return WEBKIT_COOKIE_POLICY_ACCEPT_NEVER; | |
case '@': | |
t@@ -509,7 +531,6 @@ cookiepolicy_get(void) | |
case 'A': | |
return WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS; | |
} | |
- | |
} | |
char | |
t@@ -524,7 +545,122 @@ cookiepolicy_set(const WebKitCookieAcceptPolicy p) | |
case WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS: | |
return 'A'; | |
} | |
+} | |
+ | |
+void | |
+seturiparameters(Client *c, const char *uri) | |
+{ | |
+ int i; | |
+ | |
+ for (i = 0; i < LENGTH(uriparams); ++i) { | |
+ if (uriparams[i].uri && | |
+ !regexec(&(uriparams[i].re), uri, 0, NULL, 0)) { | |
+ curconfig = uriparams[i].config; | |
+ break; | |
+ } | |
+ } | |
+ | |
+ for (i = 0; i < ParameterLast; ++i) | |
+ setparameter(c, 0, i, &curconfig[i].val); | |
+} | |
+ | |
+void | |
+setparameter(Client *c, int refresh, ParamName p, const Arg *a) | |
+{ | |
+ WebKitSettings *s = webkit_web_view_get_settings(c->view); | |
+ | |
+ switch (p) { | |
+ case CaretBrowsing: | |
+ webkit_settings_set_enable_caret_browsing(s, a->b); | |
+ refresh = 0; | |
+ break; | |
+ case CookiePolicies: | |
+ webkit_cookie_manager_set_accept_policy( | |
+ webkit_web_context_get_cookie_manager( | |
+ webkit_web_view_get_context(c->view)), | |
+ cookiepolicy_get()); | |
+ refresh = 0; | |
+ break; | |
+ case DiskCache: | |
+ webkit_web_context_set_cache_model( | |
+ webkit_web_view_get_context(c->view), | |
+ curconfig[DiskCache].val.b ? | |
+ WEBKIT_CACHE_MODEL_WEB_BROWSER : | |
+ WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER); | |
+ break; | |
+ case DNSPrefetch: | |
+ refresh = 0; | |
+ break; | |
+ case FontSize: | |
+ webkit_settings_set_default_font_size( | |
+ webkit_web_view_get_settings(c->view), | |
+ curconfig[FontSize].val.i); | |
+ break; | |
+ case FrameFlattening: | |
+ webkit_settings_set_enable_frame_flattening(s, a->b); | |
+ break; | |
+ case Geolocation: | |
+ break; | |
+ case HideBackground: | |
+ return; /* do nothing */ | |
+ case Inspector: | |
+ return; /* do nothing */ | |
+ case JavaScript: | |
+ webkit_settings_set_enable_javascript(s, a->b); | |
+ break; | |
+ case KioskMode: | |
+ return; /* do nothing */ | |
+ case LoadImages: | |
+ webkit_settings_set_auto_load_images(s, a->b); | |
+ break; | |
+ case Plugins: | |
+ webkit_settings_set_enable_plugins(s, a->b); | |
+ break; | |
+ case PreferredLanguages: | |
+ return; /* do nothing */ | |
+ case RunInFullscreen: | |
+ return; /* do nothing */ | |
+ case ScrollBars: | |
+ /* Disabled until we write some WebKitWebExtension for | |
+ * manipulating the DOM directly. | |
+ enablescrollbars = !enablescrollbars; | |
+ evalscript(c, "document.documentElement.style.overflow = '%s'", | |
+ enablescrollbars ? "auto" : "hidden"); | |
+ */ | |
+ refresh = 0; | |
+ break; | |
+ case ShowIndicators: | |
+ return; /* do nothing */ | |
+ case SpellChecking: | |
+ webkit_web_context_set_spell_checking_enabled( | |
+ webkit_web_view_get_context(c->view), | |
+ curconfig[SpellChecking].val.b); | |
+ return; /* do nothing */ | |
+ case SpellLanguages: | |
+ return; /* do nothing */ | |
+ case StrictSSL: | |
+ webkit_web_context_set_tls_errors_policy( | |
+ webkit_web_view_get_context(c->view), | |
+ curconfig[StrictSSL].val.b ? WEBKIT_TLS_ERRORS_POLICY_FAIL… | |
+ WEBKIT_TLS_ERRORS_POLICY_IGNORE); | |
+ return; /* do nothing */ | |
+ case Style: | |
+ if (curconfig[Style].val.b) | |
+ setstyle(c, getstyle(geturi(c))); | |
+ else | |
+ webkit_user_content_manager_remove_all_style_sheets( | |
+ webkit_web_view_get_user_content_manager(c->view)); | |
+ refresh = 0; | |
+ break; | |
+ case ZoomLevel: | |
+ return; /* do nothing */ | |
+ default: | |
+ return; /* do nothing */ | |
+ } | |
+ updatetitle(c); | |
+ if (refresh) | |
+ reload(c, a); | |
} | |
const char * | |
t@@ -612,30 +748,30 @@ newwindow(Client *c, const Arg *a, int noembed) | |
cmd[i++] = argv0; | |
cmd[i++] = "-a"; | |
- cmd[i++] = cookiepolicies; | |
- cmd[i++] = enablescrollbars ? "-B" : "-b"; | |
+ cmd[i++] = curconfig[CookiePolicies].val.v; | |
+ cmd[i++] = curconfig[ScrollBars].val.b ? "-B" : "-b"; | |
if (cookiefile && g_strcmp0(cookiefile, "")) { | |
cmd[i++] = "-c"; | |
cmd[i++] = cookiefile; | |
} | |
- cmd[i++] = enablecache ? "-D" : "-d"; | |
+ cmd[i++] = curconfig[DiskCache].val.b ? "-D" : "-d"; | |
if (embed && !noembed) { | |
cmd[i++] = "-e"; | |
snprintf(tmp, LENGTH(tmp), "%lu", embed); | |
cmd[i++] = tmp; | |
} | |
- cmd[i++] = runinfullscreen ? "-F" : "-f"; | |
- cmd[i++] = allowgeolocation ? "-G" : "-g"; | |
- cmd[i++] = loadimages ? "-I" : "-i"; | |
- cmd[i++] = kioskmode ? "-K" : "-k"; | |
- cmd[i++] = enablestyle ? "-M" : "-m"; | |
- cmd[i++] = enableinspector ? "-N" : "-n"; | |
- cmd[i++] = enableplugins ? "-P" : "-p"; | |
+ cmd[i++] = curconfig[RunInFullscreen].val.b ? "-F" : "-f" ; | |
+ cmd[i++] = curconfig[Geolocation].val.b ? "-G" : "-g" ; | |
+ cmd[i++] = curconfig[LoadImages].val.b ? "-I" : "-i" ; | |
+ cmd[i++] = curconfig[KioskMode].val.b ? "-K" : "-k" ; | |
+ cmd[i++] = curconfig[Style].val.b ? "-M" : "-m" ; | |
+ cmd[i++] = curconfig[Inspector].val.b ? "-N" : "-n" ; | |
+ cmd[i++] = curconfig[Plugins].val.b ? "-P" : "-p" ; | |
if (scriptfile && g_strcmp0(scriptfile, "")) { | |
cmd[i++] = "-r"; | |
cmd[i++] = scriptfile; | |
} | |
- cmd[i++] = enablescripts ? "-S" : "-s"; | |
+ cmd[i++] = curconfig[JavaScript].val.b ? "-S" : "-s"; | |
if (stylefile && g_strcmp0(stylefile, "")) { | |
cmd[i++] = "-t"; | |
cmd[i++] = stylefile; | |
t@@ -729,17 +865,17 @@ newview(Client *c, WebKitWebView *rv) | |
webkit_web_view_new_with_related_view(rv)); | |
} else { | |
settings = webkit_settings_new_with_settings( | |
- "auto-load-images", loadimages, | |
- "default-font-size", defaultfontsize, | |
- "enable-caret-browsing", enablecaretbrowsing, | |
- "enable-developer-extras", enableinspector, | |
- "enable-dns-prefetching", enablednsprefetching, | |
- "enable-frame-flattening", enableframeflattening, | |
- "enable-html5-database", enablecache, | |
- "enable-html5-local-storage", enablecache, | |
- "enable-javascript", enablescripts, | |
- "enable-plugins", enableplugins, | |
- NULL); | |
+ "auto-load-images", curconfig[LoadImages].val.b, | |
+ "default-font-size", curconfig[FontSize].val.f, | |
+ "enable-caret-browsing", curconfig[CaretBrowsing].val.b, | |
+ "enable-developer-extras", curconfig[Inspector].val.b, | |
+ "enable-dns-prefetching", curconfig[DNSPrefetch].val.b, | |
+ "enable-frame-flattening", curconfig[FrameFlattening].val.b, | |
+ "enable-html5-database", curconfig[DiskCache].val.b, | |
+ "enable-html5-local-storage", curconfig[DiskCache].val.b, | |
+ "enable-javascript", curconfig[JavaScript].val.b, | |
+ "enable-plugins", curconfig[Plugins].val.b, | |
+ NULL); | |
/* For mor interesting settings, have a look at | |
* http://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html */ | |
t@@ -764,12 +900,12 @@ newview(Client *c, WebKitWebView *rv) | |
webkit_web_context_set_process_model(context, | |
WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES); | |
/* ssl */ | |
- webkit_web_context_set_tls_errors_policy(context, strictssl ? | |
- WEBKIT_TLS_ERRORS_POLICY_FAIL : | |
+ webkit_web_context_set_tls_errors_policy(context, | |
+ curconfig[StrictSSL].val.b ? WEBKIT_TLS_ERRORS_POLICY_FAIL… | |
WEBKIT_TLS_ERRORS_POLICY_IGNORE); | |
/* disk cache */ | |
- webkit_web_context_set_cache_model(context, enablecache ? | |
- WEBKIT_CACHE_MODEL_WEB_BROWSER : | |
+ webkit_web_context_set_cache_model(context, | |
+ curconfig[DiskCache].val.b ? WEBKIT_CACHE_MODEL_WEB_BROWSE… | |
WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER); | |
/* Currently only works with text file to be compatible with c… | |
t@@ -782,11 +918,11 @@ newview(Client *c, WebKitWebView *rv) | |
cookiepolicy_get()); | |
/* languages */ | |
webkit_web_context_set_preferred_languages(context, | |
- preferedlanguages); | |
+ curconfig[PreferredLanguages].val.v); | |
webkit_web_context_set_spell_checking_languages(context, | |
- spellinglanguages); | |
+ curconfig[SpellLanguages].val.v); | |
webkit_web_context_set_spell_checking_enabled(context, | |
- enablespellchecking); | |
+ curconfig[SpellChecking].val.b); | |
g_signal_connect(G_OBJECT(context), "download-started", | |
G_CALLBACK(downloadstarted), c); | |
t@@ -907,7 +1043,7 @@ winevent(GtkWidget *w, GdkEvent *e, Client *c) | |
updatetitle(c); | |
break; | |
case GDK_KEY_PRESS: | |
- if (!kioskmode) { | |
+ if (!curconfig[KioskMode].val.b) { | |
for (i = 0; i < LENGTH(keys); ++i) { | |
if (gdk_keyval_to_lower(e->key.keyval) == | |
keys[i].keyval && | |
t@@ -943,7 +1079,7 @@ showview(WebKitWebView *v, Client *c) | |
GdkWindow *gwin; | |
c->finder = webkit_web_view_get_find_controller(c->view); | |
- if (enableinspector) | |
+ if (curconfig[Inspector].val.b) | |
c->inspector = webkit_web_view_get_inspector(c->view); | |
c->win = createwindow(c); | |
t@@ -960,19 +1096,20 @@ showview(WebKitWebView *v, Client *c) | |
puts(winid); | |
} | |
- if (hidebackground) | |
+ if (curconfig[HideBackground].val.b) | |
webkit_web_view_set_background_color(c->view, &bgcolor); | |
- if (!kioskmode) { | |
+ if (!curconfig[KioskMode].val.b) { | |
gdk_window_set_events(gwin, GDK_ALL_EVENTS_MASK); | |
gdk_window_add_filter(gwin, processx, c); | |
} | |
- if (runinfullscreen) | |
+ if (curconfig[RunInFullscreen].val.b) | |
togglefullscreen(c, NULL); | |
- if (zoomlevel != 1.0) | |
- webkit_web_view_set_zoom_level(c->view, zoomlevel); | |
+ if (curconfig[ZoomLevel].val.f != 1.0) | |
+ webkit_web_view_set_zoom_level(c->view, | |
+ curconfig[ZoomLevel].val.f); | |
setatom(c, AtomFind, ""); | |
setatom(c, AtomUri, "about:blank"); | |
t@@ -1022,6 +1159,7 @@ loadchanged(WebKitWebView *v, WebKitLoadEvent e, Client … | |
switch (e) { | |
case WEBKIT_LOAD_STARTED: | |
+ curconfig = defconfig; | |
setatom(c, AtomUri, title); | |
c->title = title; | |
c->tlsflags = G_TLS_CERTIFICATE_VALIDATE_ALL + 1; | |
t@@ -1037,8 +1175,8 @@ loadchanged(WebKitWebView *v, WebKitLoadEvent e, Client … | |
&(c->tlsflags))) | |
c->tlsflags = G_TLS_CERTIFICATE_VALIDATE_ALL + 1; | |
- if (enablestyle) | |
- setstyle(c, getstyle(geturi(c))); | |
+ setatom(c, AtomUri, geturi(c)); | |
+ seturiparameters(c, geturi(c)); | |
break; | |
case WEBKIT_LOAD_FINISHED: | |
/* Disabled until we write some WebKitWebExtension for | |
t@@ -1093,7 +1231,7 @@ gboolean | |
permissionrequested(WebKitWebView *v, WebKitPermissionRequest *r, Client *c) | |
{ | |
if (WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(r)) { | |
- if (allowgeolocation) | |
+ if (curconfig[Geolocation].val.b) | |
webkit_permission_request_allow(r); | |
else | |
webkit_permission_request_deny(r); | |
t@@ -1302,13 +1440,15 @@ void | |
zoom(Client *c, const Arg *a) | |
{ | |
if (a->i > 0) | |
- webkit_web_view_set_zoom_level(c->view, zoomlevel + 0.1); | |
+ webkit_web_view_set_zoom_level(c->view, | |
+ curconfig[ZoomLevel].val.f + 0.… | |
else if (a->i < 0) | |
- webkit_web_view_set_zoom_level(c->view, zoomlevel - 0.1); | |
+ webkit_web_view_set_zoom_level(c->view, | |
+ curconfig[ZoomLevel].val.f - 0.… | |
else | |
webkit_web_view_set_zoom_level(c->view, 1.0); | |
- zoomlevel = webkit_web_view_get_zoom_level(c->view); | |
+ curconfig[ZoomLevel].val.f = webkit_web_view_get_zoom_level(c->view); | |
} | |
void | |
t@@ -1364,49 +1504,8 @@ stop(Client *c, const Arg *a) | |
void | |
toggle(Client *c, const Arg *a) | |
{ | |
- WebKitSettings *s = webkit_web_view_get_settings(c->view); | |
- | |
- switch ((unsigned int)a->i) { | |
- case CaretBrowsing: | |
- enablecaretbrowsing = !enablecaretbrowsing; | |
- webkit_settings_set_enable_caret_browsing(s, | |
- enablecaretbrowsing); | |
- updatetitle(c); | |
- return; /* do not reload */ | |
- break; | |
- case FrameFlattening: | |
- enableframeflattening = !enableframeflattening; | |
- webkit_settings_set_enable_frame_flattening(s, | |
- enableframeflattening); | |
- break; | |
- case Geolocation: | |
- allowgeolocation = !allowgeolocation; | |
- break; | |
- case JavaScript: | |
- enablescripts = !enablescripts; | |
- webkit_settings_set_enable_javascript(s, enablescripts); | |
- break; | |
- case LoadImages: | |
- loadimages = !loadimages; | |
- webkit_settings_set_auto_load_images(s, loadimages); | |
- break; | |
- case Plugins: | |
- enableplugins = !enableplugins; | |
- webkit_settings_set_enable_plugins(s, enableplugins); | |
- break; | |
- case ScrollBars: | |
- /* Disabled until we write some WebKitWebExtension for | |
- * manipulating the DOM directly. | |
- enablescrollbars = !enablescrollbars; | |
- evalscript(c, "document.documentElement.style.overflow = '%s'", | |
- enablescrollbars ? "auto" : "hidden"); | |
- */ | |
- return; /* do not reload */ | |
- break; | |
- default: | |
- break; | |
- } | |
- reload(c, a); | |
+ curconfig[a->i].val.b ^= 1; | |
+ setparameter(c, 1, (ParamName)a->i, &curconfig[a->i].val); | |
} | |
void | |
t@@ -1423,35 +1522,15 @@ void | |
togglecookiepolicy(Client *c, const Arg *a) | |
{ | |
++cookiepolicy; | |
- cookiepolicy %= strlen(cookiepolicies); | |
- | |
- webkit_cookie_manager_set_accept_policy( | |
- webkit_web_context_get_cookie_manager( | |
- webkit_web_view_get_context(c->view)), | |
- cookiepolicy_get()); | |
+ cookiepolicy %= strlen(curconfig[CookiePolicies].val.v); | |
- updatetitle(c); | |
- /* Do not reload. */ | |
-} | |
- | |
-void | |
-togglestyle(Client *c, const Arg *a) | |
-{ | |
- enablestyle = !enablestyle; | |
- | |
- if (enablestyle) | |
- setstyle(c, getstyle(geturi(c))); | |
- else | |
- webkit_user_content_manager_remove_all_style_sheets( | |
- webkit_web_view_get_user_content_manager(c->view)); | |
- | |
- updatetitle(c); | |
+ setparameter(c, 0, CookiePolicies, NULL); | |
} | |
void | |
toggleinspector(Client *c, const Arg *a) | |
{ | |
- if (enableinspector) { | |
+ if (curconfig[Inspector].val.b) { | |
if (webkit_web_inspector_is_attached(c->inspector)) | |
webkit_web_inspector_close(c->inspector); | |
else | |
t@@ -1520,76 +1599,76 @@ main(int argc, char *argv[]) | |
/* command line args */ | |
ARGBEGIN { | |
case 'a': | |
- cookiepolicies = EARGF(usage()); | |
+ defconfig FSETV(CookiePolicies, EARGF(usage())); | |
break; | |
case 'b': | |
- enablescrollbars = 0; | |
+ defconfig FSETB(ScrollBars, 0); | |
break; | |
case 'B': | |
- enablescrollbars = 1; | |
+ defconfig FSETB(ScrollBars, 1); | |
break; | |
case 'c': | |
cookiefile = EARGF(usage()); | |
break; | |
case 'd': | |
- enablecache = 0; | |
+ defconfig FSETB(DiskCache, 0); | |
break; | |
case 'D': | |
- enablecache = 1; | |
+ defconfig FSETB(DiskCache, 1); | |
break; | |
case 'e': | |
embed = strtol(EARGF(usage()), NULL, 0); | |
break; | |
case 'f': | |
- runinfullscreen = 0; | |
+ defconfig FSETB(RunInFullscreen, 0); | |
break; | |
case 'F': | |
- runinfullscreen = 1; | |
+ defconfig FSETB(RunInFullscreen, 1); | |
break; | |
case 'g': | |
- allowgeolocation = 0; | |
+ defconfig FSETB(Geolocation, 0); | |
break; | |
case 'G': | |
- allowgeolocation = 1; | |
+ defconfig FSETB(Geolocation, 1); | |
break; | |
case 'i': | |
- loadimages = 0; | |
+ defconfig FSETB(LoadImages, 0); | |
break; | |
case 'I': | |
- loadimages = 1; | |
+ defconfig FSETB(LoadImages, 1); | |
break; | |
case 'k': | |
- kioskmode = 0; | |
+ defconfig FSETB(KioskMode, 0); | |
break; | |
case 'K': | |
- kioskmode = 1; | |
+ defconfig FSETB(KioskMode, 1); | |
break; | |
case 'm': | |
- enablestyle = 0; | |
+ defconfig FSETB(Style, 0); | |
break; | |
case 'M': | |
- enablestyle = 1; | |
+ defconfig FSETB(Style, 1); | |
break; | |
case 'n': | |
- enableinspector = 0; | |
+ defconfig FSETB(Inspector, 0); | |
break; | |
case 'N': | |
- enableinspector = 1; | |
+ defconfig FSETB(Inspector, 1); | |
break; | |
case 'p': | |
- enableplugins = 0; | |
+ defconfig FSETB(Plugins, 0); | |
break; | |
case 'P': | |
- enableplugins = 1; | |
+ defconfig FSETB(Plugins, 1); | |
break; | |
case 'r': | |
scriptfile = EARGF(usage()); | |
break; | |
case 's': | |
- enablescripts = 0; | |
+ defconfig FSETB(JavaScript, 0); | |
break; | |
case 'S': | |
- enablescripts = 1; | |
+ defconfig FSETB(JavaScript, 1); | |
break; | |
case 't': | |
stylefile = EARGF(usage()); | |
t@@ -1604,7 +1683,7 @@ main(int argc, char *argv[]) | |
showxid = 1; | |
break; | |
case 'z': | |
- zoomlevel = strtof(EARGF(usage()), NULL); | |
+ defconfig FSETF(ZoomLevel, strtof(EARGF(usage()), NULL)); | |
break; | |
default: | |
usage(); |