about summary refs log tree commit diff stats
path: root/xxxterm.c
diff options
context:
space:
mode:
authorMarco Peereboom <marco@conformal.com>2011-07-07 16:33:31 +0000
committerMarco Peereboom <marco@conformal.com>2011-07-07 16:33:31 +0000
commit2119081cc065c39406b7cdb9b718a978bf843a66 (patch)
tree887a133cec736a08129e990e15e41cecb9497aea /xxxterm.c
parent76f1b1be26ae788310170bae95a6cf2bd2c20163 (diff)
downloadxombrero-2119081cc065c39406b7cdb9b718a978bf843a66.tar.gz
Add toplevel toggle command to temporary enable cookie and js whitelist
for the toplevel domain.  The "play" button now uses this too instead of
the old FQDN JS only action.

requested by several people.
Diffstat (limited to 'xxxterm.c')
-rw-r--r--xxxterm.c42
1 files changed, 33 insertions, 9 deletions
diff --git a/xxxterm.c b/xxxterm.c
index d8208a0..eb8a3da 100644
--- a/xxxterm.c
+++ b/xxxterm.c
@@ -430,6 +430,7 @@ struct karg {
 #define XT_WL_TOPLEVEL		(1<<4)
 #define XT_WL_PERSISTENT	(1<<5)
 #define XT_WL_SESSION		(1<<6)
+#define XT_WL_RELOAD		(1<<7)
 
 #define XT_SHOW			(1<<7)
 #define XT_DELETE		(1<<8)
@@ -2375,7 +2376,8 @@ toggle_cwl(struct tab *t, struct karg *args)
 		/* disable cookies for domain */
 		RB_REMOVE(domain_list, &c_wl, d);
 
-	webkit_web_view_reload(t->wv);
+	if (args->i & XT_WL_RELOAD)
+		webkit_web_view_reload(t->wv);
 
 	g_free(dom);
 	return (0);
@@ -2430,7 +2432,9 @@ toggle_js(struct tab *t, struct karg *args)
 	g_object_set(G_OBJECT(t->settings),
 	    "javascript-can-open-windows-automatically", es, (char *)NULL);
 	webkit_web_view_set_settings(t->wv, t->settings);
-	webkit_web_view_reload(t->wv);
+
+	if (args->i & XT_WL_RELOAD)
+		webkit_web_view_reload(t->wv);
 done:
 	if (dom)
 		g_free(dom);
@@ -2442,7 +2446,10 @@ js_toggle_cb(GtkWidget *w, struct tab *t)
 {
 	struct karg		a;
 
-	a.i = XT_WL_TOGGLE | XT_WL_FQDN;
+	a.i = XT_WL_TOGGLE | XT_WL_TOPLEVEL;
+	toggle_cwl(t, &a);
+
+	a.i = XT_WL_TOGGLE | XT_WL_TOPLEVEL | XT_WL_RELOAD;
 	toggle_js(t, &a);
 }
 
@@ -3342,11 +3349,13 @@ cookie_cmd(struct tab *t, struct karg *args)
 {
 	if (args->i & XT_SHOW)
 		wl_show(t, args, "Cookie White List", &c_wl);
-	else if (args->i & XT_WL_TOGGLE)
+	else if (args->i & XT_WL_TOGGLE) {
+		args->i |= XT_WL_RELOAD;
 		toggle_cwl(t, args);
-	else if (args->i & XT_SAVE)
+	} else if (args->i & XT_SAVE) {
+		args->i |= XT_WL_RELOAD;
 		wl_save(t, args, 0);
-	else if (args->i & XT_DELETE)
+	} else if (args->i & XT_DELETE)
 		show_oops(t, "'cookie delete' currently unimplemented");
 
 	return (0);
@@ -3357,17 +3366,27 @@ js_cmd(struct tab *t, struct karg *args)
 {
 	if (args->i & XT_SHOW)
 		wl_show(t, args, "JavaScript White List", &js_wl);
-	else if (args->i & XT_SAVE)
+	else if (args->i & XT_SAVE) {
+		args->i |= XT_WL_RELOAD;
 		wl_save(t, args, 1);
-	else if (args->i & XT_WL_TOGGLE)
+	} else if (args->i & XT_WL_TOGGLE) {
+		args->i |= XT_WL_RELOAD;
 		toggle_js(t, args);
-	else if (args->i & XT_DELETE)
+	} else if (args->i & XT_DELETE)
 		show_oops(t, "'js delete' currently unimplemented");
 
 	return (0);
 }
 
 int
+toplevel_cmd(struct tab *t, struct karg *args)
+{
+	js_toggle_cb(t->js_toggle, t);
+
+	return (0);
+}
+
+int
 add_favorite(struct tab *t, struct karg *args)
 {
 	char			file[PATH_MAX];
@@ -4655,6 +4674,7 @@ struct key_binding {
 	{ "yankuri",		0,	0,	GDK_y		},
 	{ "pasteuricur",	0,	0,	GDK_p		},
 	{ "pasteurinew",	0,	0,	GDK_P		},
+	{ "toplevel toggle",	0,	0,	GDK_F4		},
 
 	/* search */
 	{ "searchnext",		0,	0,	GDK_n		},
@@ -5007,6 +5027,10 @@ struct cmd {
 	{ "domain",		2,	cookie_cmd,		XT_WL_TOGGLE | XT_WL_TOPLEVEL,			0 },
 	{ "fqdn",		2,	cookie_cmd,		XT_WL_TOGGLE | XT_WL_FQDN,			0 },
 
+	/* toplevel (domain) command */
+	{ "toplevel",		0,	toplevel_cmd,		XT_WL_TOGGLE | XT_WL_TOPLEVEL | XT_WL_RELOAD,	0 },
+	{ "toggle",		1,	toplevel_cmd,		XT_WL_TOGGLE | XT_WL_TOPLEVEL | XT_WL_RELOAD,	0 },
+
 	/* cookie jar */
 	{ "cookiejar",		0,	xtp_page_cl,		0,			0 },