Adapt toggle(), clean some config parameters
Regroup all toggles in an enum and handle them with a unique function via a switch. That lets us take different actions for each toggle. Add a frame flatenning and a dns preteching options.
This commit is contained in:
		
							parent
							
								
									526b974c33
								
							
						
					
					
						commit
						82abf5154f
					
				
							
								
								
									
										23
									
								
								config.def.h
								
								
								
								
							
							
						
						
									
										23
									
								
								config.def.h
								
								
								
								
							| 
						 | 
				
			
			@ -8,7 +8,6 @@ static char *cachedir       = "~/.surf/cache/";
 | 
			
		|||
 | 
			
		||||
static Bool kioskmode       = FALSE; /* Ignore shortcuts */
 | 
			
		||||
static Bool showindicators  = TRUE;  /* Show indicators in window title */
 | 
			
		||||
static Bool zoomto96dpi     = TRUE;  /* Zoom pages to always emulate 96dpi */
 | 
			
		||||
static Bool runinfullscreen = FALSE; /* Run in fullscreen mode by default */
 | 
			
		||||
 | 
			
		||||
static guint defaultfontsize = 12;   /* Default font size */
 | 
			
		||||
| 
						 | 
				
			
			@ -18,15 +17,12 @@ static gfloat zoomlevel = 1.0;       /* Default zoom level */
 | 
			
		|||
static char *cookiefile     = "~/.surf/cookies.txt";
 | 
			
		||||
static char *cookiepolicies = "Aa@"; /* A: accept all; a: accept nothing,
 | 
			
		||||
                                      * @: accept no third party */
 | 
			
		||||
static char *cafile         = "/etc/ssl/certs/ca-certificates.crt";
 | 
			
		||||
static Bool strictssl       = FALSE; /* Refuse untrusted SSL connections */
 | 
			
		||||
static time_t sessiontime   = 3600;
 | 
			
		||||
 | 
			
		||||
/* Webkit default features */
 | 
			
		||||
static Bool enablescrollbars      = TRUE;
 | 
			
		||||
static Bool enablespatialbrowsing = TRUE;
 | 
			
		||||
static Bool enablediskcache       = TRUE;
 | 
			
		||||
static int diskcachebytes         = 5 * 1024 * 1024;
 | 
			
		||||
static Bool enablecaretbrowsing   = TRUE;
 | 
			
		||||
static Bool enablecache           = TRUE;
 | 
			
		||||
static Bool enableplugins         = TRUE;
 | 
			
		||||
static Bool enablescripts         = TRUE;
 | 
			
		||||
static Bool enableinspector       = TRUE;
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +30,8 @@ static Bool enablestyle           = TRUE;
 | 
			
		|||
static Bool loadimages            = TRUE;
 | 
			
		||||
static Bool hidebackground        = FALSE;
 | 
			
		||||
static Bool allowgeolocation      = TRUE;
 | 
			
		||||
static Bool enablednsprefetching  = FALSE;
 | 
			
		||||
static Bool enableframeflattening = FALSE;
 | 
			
		||||
 | 
			
		||||
static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE |
 | 
			
		||||
                                    WEBKIT_FIND_OPTIONS_WRAP_AROUND;
 | 
			
		||||
| 
						 | 
				
			
			@ -122,13 +120,16 @@ static Key keys[] = {
 | 
			
		|||
	{ MODKEY,                GDK_KEY_n,      find,       { .i = +1 } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_n,      find,       { .i = -1 } },
 | 
			
		||||
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_c,      toggle,     { .v = "enable-caret-browsing" } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_i,      toggle,     { .v = "auto-load-images" } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_s,      toggle,     { .v = "enable-scripts" } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_v,      toggle,     { .v = "enable-plugins" } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_c,      toggle,     { .i = CaretBrowsing } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_f,      toggle,     { .i = FrameFlattening } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_g,      toggle,     { .i = Geolocation } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_s,      toggle,     { .i = JavaScript } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_i,      toggle,     { .i = LoadImages } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_v,      toggle,     { .i = Plugins } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_b,      toggle,     { .i = ScrollBars } },
 | 
			
		||||
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_a,      togglecookiepolicy, { 0 } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_m,      togglestyle, { 0 } },
 | 
			
		||||
	{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_g,      togglegeolocation, { 0 } },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* button definitions */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										83
									
								
								surf.c
								
								
								
								
							
							
						
						
									
										83
									
								
								surf.c
								
								
								
								
							| 
						 | 
				
			
			@ -47,6 +47,16 @@ enum {
 | 
			
		|||
	OnAny   = OnDoc | OnLink | OnImg | OnMedia | OnEdit | OnBar | OnSel,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	CaretBrowsing,
 | 
			
		||||
	FrameFlattening,
 | 
			
		||||
	Geolocation,
 | 
			
		||||
	JavaScript,
 | 
			
		||||
	LoadImages,
 | 
			
		||||
	Plugins,
 | 
			
		||||
	ScrollBars,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef union Arg Arg;
 | 
			
		||||
union Arg {
 | 
			
		||||
	gboolean b;
 | 
			
		||||
| 
						 | 
				
			
			@ -176,9 +186,8 @@ static void sigchld(int unused);
 | 
			
		|||
static void spawn(Client *c, const Arg *arg);
 | 
			
		||||
static void stop(Client *c, const Arg *arg);
 | 
			
		||||
static void titlechanged(WebKitWebView *view, GParamSpec *ps, Client *c);
 | 
			
		||||
static void toggle(Client *c, const Arg *arg);
 | 
			
		||||
static void toggle(Client *c, const Arg *a);
 | 
			
		||||
static void togglecookiepolicy(Client *c, const Arg *arg);
 | 
			
		||||
static void togglegeolocation(Client *c, const Arg *arg);
 | 
			
		||||
static void togglestyle(Client *c, const Arg *arg);
 | 
			
		||||
static void updatetitle(Client *c);
 | 
			
		||||
static void updatewinid(Client *c);
 | 
			
		||||
| 
						 | 
				
			
			@ -1064,7 +1073,7 @@ newwindow(Client *c, const Arg *arg, gboolean noembed)
 | 
			
		|||
		cmd[i++] = "-s";
 | 
			
		||||
	if (showxid)
 | 
			
		||||
		cmd[i++] = "-x";
 | 
			
		||||
	if (enablediskcache)
 | 
			
		||||
	if (enablecache)
 | 
			
		||||
		cmd[i++] = "-D";
 | 
			
		||||
	cmd[i++] = "-c";
 | 
			
		||||
	cmd[i++] = cookiefile;
 | 
			
		||||
| 
						 | 
				
			
			@ -1306,18 +1315,53 @@ winevent(GtkWidget *w, GdkEvent *e, Client *c)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
toggle(Client *c, const Arg *arg)
 | 
			
		||||
toggle(Client *c, const Arg *a)
 | 
			
		||||
{
 | 
			
		||||
	WebKitWebSettings *settings;
 | 
			
		||||
	char *name = (char *)arg->v;
 | 
			
		||||
	gboolean value;
 | 
			
		||||
	Arg a = { .b = FALSE };
 | 
			
		||||
	WebKitSettings *s;
 | 
			
		||||
 | 
			
		||||
	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);
 | 
			
		||||
	s = webkit_web_view_get_settings(c->view);
 | 
			
		||||
 | 
			
		||||
	reload(c, &a);
 | 
			
		||||
	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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
| 
						 | 
				
			
			@ -1335,15 +1379,6 @@ togglecookiepolicy(Client *c, const Arg *arg)
 | 
			
		|||
	/* Do not reload. */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
togglegeolocation(Client *c, const Arg *arg)
 | 
			
		||||
{
 | 
			
		||||
	Arg a = { .b = FALSE };
 | 
			
		||||
 | 
			
		||||
	allowgeolocation ^= 1;
 | 
			
		||||
	reload(c, &a);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
togglestyle(Client *c, const Arg *arg)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -1368,7 +1403,7 @@ gettogglestat(Client *c)
 | 
			
		|||
 | 
			
		||||
	togglestat[p++] = allowgeolocation? 'G': 'g';
 | 
			
		||||
 | 
			
		||||
	togglestat[p++] = enablediskcache? 'D': 'd';
 | 
			
		||||
	togglestat[p++] = enablecache? 'D': 'd';
 | 
			
		||||
 | 
			
		||||
	g_object_get(G_OBJECT(settings), "auto-load-images", &value, NULL);
 | 
			
		||||
	togglestat[p++] = value? 'I': 'i';
 | 
			
		||||
| 
						 | 
				
			
			@ -1473,10 +1508,10 @@ main(int argc, char *argv[])
 | 
			
		|||
		cookiefile = EARGF(usage());
 | 
			
		||||
		break;
 | 
			
		||||
	case 'd':
 | 
			
		||||
		enablediskcache = 0;
 | 
			
		||||
		enablecache = 0;
 | 
			
		||||
		break;
 | 
			
		||||
	case 'D':
 | 
			
		||||
		enablediskcache = 1;
 | 
			
		||||
		enablecache = 1;
 | 
			
		||||
		break;
 | 
			
		||||
	case 'e':
 | 
			
		||||
		embed = strtol(EARGF(usage()), NULL, 0);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue