};
typedef enum {
+ AcceleratedCanvas,
CaretBrowsing,
CookiePolicies,
DiskCache,
JavaScript,
KioskMode,
LoadImages,
+ MediaManualPlay,
Plugins,
PreferredLanguages,
RunInFullscreen,
ScrollBars,
ShowIndicators,
+ SiteQuirks,
SpellChecking,
SpellLanguages,
StrictSSL,
static void die(const char *errstr, ...);
static void setup(void);
static void sigchld(int unused);
+static void sighup(int unused);
static char *buildfile(const char *path);
static char *buildpath(const char *path);
static const char *getuserhomedir(const char *user);
/* GTK/WebKit */
static WebKitWebView *newview(Client *c, WebKitWebView *rv);
+static void initwebextensions(WebKitWebContext *wc, Client *c);
static GtkWidget *createview(WebKitWebView *v, WebKitNavigationAction *a,
Client *c);
static gboolean buttonreleased(GtkWidget *w, GdkEvent *e, Client *c);
void
setup(void)
{
- GdkDisplay *gdpy = gdk_display_get_default();
+ GdkDisplay *gdpy;
int i, j;
/* clean up any zombies immediately */
sigchld(0);
+ if (signal(SIGHUP, sighup) == SIG_ERR)
+ die("Can't install SIGHUP handler");
+
gtk_init(NULL, NULL);
+ gdpy = gdk_display_get_default();
dpy = GDK_DISPLAY_XDISPLAY(gdpy);
curconfig = defconfig;
;
}
+void
+sighup(int unused)
+{
+ Arg a = { .b = 0 };
+ Client *c;
+
+ for (c = clients; c; c = c->next)
+ reload(c, &a);
+}
+
char *
buildfile(const char *path)
{
WebKitSettings *s = webkit_web_view_get_settings(c->view);
switch (p) {
+ case AcceleratedCanvas:
+ webkit_settings_set_enable_accelerated_2d_canvas(s, a->b);
+ break;
case CaretBrowsing:
webkit_settings_set_enable_caret_browsing(s, a->b);
refresh = 0;
case LoadImages:
webkit_settings_set_auto_load_images(s, a->b);
break;
+ case MediaManualPlay:
+ webkit_settings_set_media_playback_requires_user_gesture(s, a->b);
+ break;
case Plugins:
webkit_settings_set_enable_plugins(s, a->b);
break;
return; /* do not update */
case ShowIndicators:
break;
+ case SiteQuirks:
+ webkit_settings_set_enable_site_specific_quirks(s, a->b);
+ break;
case SpellChecking:
webkit_web_context_set_spell_checking_enabled(
webkit_web_view_get_context(c->view), a->b);
} else {
settings = webkit_settings_new_with_settings(
"auto-load-images", curconfig[LoadImages].val.b,
- "default-font-size", curconfig[FontSize].val.f,
+ "default-font-size", curconfig[FontSize].val.i,
"enable-caret-browsing", curconfig[CaretBrowsing].val.b,
"enable-developer-extras", curconfig[Inspector].val.b,
"enable-dns-prefetching", curconfig[DNSPrefetch].val.b,
"enable-html5-local-storage", curconfig[DiskCache].val.b,
"enable-javascript", curconfig[JavaScript].val.b,
"enable-plugins", curconfig[Plugins].val.b,
+ "enable-accelerated-2d-canvas", curconfig[AcceleratedCanvas].val.b,
+ "enable-site-specific-quirks", curconfig[SiteQuirks].val.b,
+ "media-playback-requires-user-gesture", curconfig[MediaManualPlay].val.b,
NULL);
/* For mor interesting settings, have a look at
* http://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html */
g_signal_connect(G_OBJECT(context), "download-started",
G_CALLBACK(downloadstarted), c);
+ g_signal_connect(G_OBJECT(context), "initialize-web-extensions",
+ G_CALLBACK(initwebextensions), c);
v = g_object_new(WEBKIT_TYPE_WEB_VIEW,
"settings", settings,
return v;
}
+void
+initwebextensions(WebKitWebContext *wc, Client *c)
+{
+ webkit_web_context_set_web_extensions_directory(wc, WEBEXTDIR);
+}
+
GtkWidget *
createview(WebKitWebView *v, WebKitNavigationAction *a, Client *c)
{