mirror of git://git.suckless.org/surf
Only get webkit context and settings once
This commit is contained in:
parent
1f5b8f3bd1
commit
d3ee652860
58
surf.c
58
surf.c
|
@ -101,6 +101,8 @@ typedef struct {
|
||||||
typedef struct Client {
|
typedef struct Client {
|
||||||
GtkWidget *win;
|
GtkWidget *win;
|
||||||
WebKitWebView *view;
|
WebKitWebView *view;
|
||||||
|
WebKitSettings *settings;
|
||||||
|
WebKitWebContext *context;
|
||||||
WebKitWebInspector *inspector;
|
WebKitWebInspector *inspector;
|
||||||
WebKitFindController *finder;
|
WebKitFindController *finder;
|
||||||
WebKitHitTestResult *mousepos;
|
WebKitHitTestResult *mousepos;
|
||||||
|
@ -750,7 +752,6 @@ void
|
||||||
setparameter(Client *c, int refresh, ParamName p, const Arg *a)
|
setparameter(Client *c, int refresh, ParamName p, const Arg *a)
|
||||||
{
|
{
|
||||||
GdkRGBA bgcolor = { 0 };
|
GdkRGBA bgcolor = { 0 };
|
||||||
WebKitSettings *s = webkit_web_view_get_settings(c->view);
|
|
||||||
|
|
||||||
modparams[p] = curconfig[p].prio;
|
modparams[p] = curconfig[p].prio;
|
||||||
|
|
||||||
|
@ -760,7 +761,7 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
|
||||||
case AccessWebcam:
|
case AccessWebcam:
|
||||||
return; /* do nothing */
|
return; /* do nothing */
|
||||||
case CaretBrowsing:
|
case CaretBrowsing:
|
||||||
webkit_settings_set_enable_caret_browsing(s, a->i);
|
webkit_settings_set_enable_caret_browsing(c->settings, a->i);
|
||||||
refresh = 0;
|
refresh = 0;
|
||||||
break;
|
break;
|
||||||
case Certificate:
|
case Certificate:
|
||||||
|
@ -769,36 +770,37 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case CookiePolicies:
|
case CookiePolicies:
|
||||||
webkit_cookie_manager_set_accept_policy(
|
webkit_cookie_manager_set_accept_policy(
|
||||||
webkit_web_context_get_cookie_manager(
|
webkit_web_context_get_cookie_manager(c->context),
|
||||||
webkit_web_view_get_context(c->view)),
|
|
||||||
cookiepolicy_get());
|
cookiepolicy_get());
|
||||||
refresh = 0;
|
refresh = 0;
|
||||||
break;
|
break;
|
||||||
case DarkMode:
|
case DarkMode:
|
||||||
g_object_set(gtk_settings_get_default(),
|
g_object_set(gtk_settings_get_default(),
|
||||||
"gtk-application-prefer-dark-theme", a->i, NULL);
|
"gtk-application-prefer-dark-theme", a->i, NULL);
|
||||||
|
return;
|
||||||
break;
|
break;
|
||||||
case DiskCache:
|
case DiskCache:
|
||||||
webkit_web_context_set_cache_model(
|
webkit_web_context_set_cache_model(c->context, a->i ?
|
||||||
webkit_web_view_get_context(c->view), a->i ?
|
|
||||||
WEBKIT_CACHE_MODEL_WEB_BROWSER :
|
WEBKIT_CACHE_MODEL_WEB_BROWSER :
|
||||||
WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER);
|
WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER);
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case DefaultCharset:
|
case DefaultCharset:
|
||||||
webkit_settings_set_default_charset(s, a->v);
|
webkit_settings_set_default_charset(c->settings, a->v);
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case DNSPrefetch:
|
case DNSPrefetch:
|
||||||
webkit_settings_set_enable_dns_prefetching(s, a->i);
|
webkit_settings_set_enable_dns_prefetching(c->settings, a->i);
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case FileURLsCrossAccess:
|
case FileURLsCrossAccess:
|
||||||
webkit_settings_set_allow_file_access_from_file_urls(s, a->i);
|
webkit_settings_set_allow_file_access_from_file_urls(
|
||||||
webkit_settings_set_allow_universal_access_from_file_urls(s, a->i);
|
c->settings, a->i);
|
||||||
|
webkit_settings_set_allow_universal_access_from_file_urls(
|
||||||
|
c->settings, a->i);
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case FontSize:
|
case FontSize:
|
||||||
webkit_settings_set_default_font_size(s, a->i);
|
webkit_settings_set_default_font_size(c->settings, a->i);
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case FrameFlattening:
|
case FrameFlattening:
|
||||||
webkit_settings_set_enable_frame_flattening(s, a->i);
|
webkit_settings_set_enable_frame_flattening(c->settings, a->i);
|
||||||
break;
|
break;
|
||||||
case Geolocation:
|
case Geolocation:
|
||||||
refresh = 0;
|
refresh = 0;
|
||||||
|
@ -808,21 +810,22 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
|
||||||
webkit_web_view_set_background_color(c->view, &bgcolor);
|
webkit_web_view_set_background_color(c->view, &bgcolor);
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case Inspector:
|
case Inspector:
|
||||||
webkit_settings_set_enable_developer_extras(s, a->i);
|
webkit_settings_set_enable_developer_extras(c->settings, a->i);
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case Java:
|
case Java:
|
||||||
webkit_settings_set_enable_java(s, a->i);
|
webkit_settings_set_enable_java(c->settings, a->i);
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case JavaScript:
|
case JavaScript:
|
||||||
webkit_settings_set_enable_javascript(s, a->i);
|
webkit_settings_set_enable_javascript(c->settings, a->i);
|
||||||
break;
|
break;
|
||||||
case KioskMode:
|
case KioskMode:
|
||||||
return; /* do nothing */
|
return; /* do nothing */
|
||||||
case LoadImages:
|
case LoadImages:
|
||||||
webkit_settings_set_auto_load_images(s, a->i);
|
webkit_settings_set_auto_load_images(c->settings, a->i);
|
||||||
break;
|
break;
|
||||||
case MediaManualPlay:
|
case MediaManualPlay:
|
||||||
webkit_settings_set_media_playback_requires_user_gesture(s, a->i);
|
webkit_settings_set_media_playback_requires_user_gesture(
|
||||||
|
c->settings, a->i);
|
||||||
break;
|
break;
|
||||||
case PreferredLanguages:
|
case PreferredLanguages:
|
||||||
return; /* do nothing */
|
return; /* do nothing */
|
||||||
|
@ -839,20 +842,20 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
|
||||||
case ShowIndicators:
|
case ShowIndicators:
|
||||||
break;
|
break;
|
||||||
case SmoothScrolling:
|
case SmoothScrolling:
|
||||||
webkit_settings_set_enable_smooth_scrolling(s, a->i);
|
webkit_settings_set_enable_smooth_scrolling(c->settings, a->i);
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case SiteQuirks:
|
case SiteQuirks:
|
||||||
webkit_settings_set_enable_site_specific_quirks(s, a->i);
|
webkit_settings_set_enable_site_specific_quirks(
|
||||||
|
c->settings, a->i);
|
||||||
break;
|
break;
|
||||||
case SpellChecking:
|
case SpellChecking:
|
||||||
webkit_web_context_set_spell_checking_enabled(
|
webkit_web_context_set_spell_checking_enabled(
|
||||||
webkit_web_view_get_context(c->view), a->i);
|
c->context, a->i);
|
||||||
return; /* do not update */
|
return; /* do not update */
|
||||||
case SpellLanguages:
|
case SpellLanguages:
|
||||||
return; /* do nothing */
|
return; /* do nothing */
|
||||||
case StrictTLS:
|
case StrictTLS:
|
||||||
webkit_web_context_set_tls_errors_policy(
|
webkit_web_context_set_tls_errors_policy(c->context, a->i ?
|
||||||
webkit_web_view_get_context(c->view), a->i ?
|
|
||||||
WEBKIT_TLS_ERRORS_POLICY_FAIL :
|
WEBKIT_TLS_ERRORS_POLICY_FAIL :
|
||||||
WEBKIT_TLS_ERRORS_POLICY_IGNORE);
|
WEBKIT_TLS_ERRORS_POLICY_IGNORE);
|
||||||
break;
|
break;
|
||||||
|
@ -864,7 +867,7 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
|
||||||
refresh = 0;
|
refresh = 0;
|
||||||
break;
|
break;
|
||||||
case WebGL:
|
case WebGL:
|
||||||
webkit_settings_set_enable_webgl(s, a->i);
|
webkit_settings_set_enable_webgl(c->settings, a->i);
|
||||||
break;
|
break;
|
||||||
case ZoomLevel:
|
case ZoomLevel:
|
||||||
webkit_web_view_set_zoom_level(c->view, a->f);
|
webkit_web_view_set_zoom_level(c->view, a->f);
|
||||||
|
@ -910,8 +913,8 @@ setcert(Client *c, const char *uri)
|
||||||
if ((uri = strstr(uri, "https://"))) {
|
if ((uri = strstr(uri, "https://"))) {
|
||||||
uri += sizeof("https://") - 1;
|
uri += sizeof("https://") - 1;
|
||||||
host = g_strndup(uri, strchr(uri, '/') - uri);
|
host = g_strndup(uri, strchr(uri, '/') - uri);
|
||||||
webkit_web_context_allow_tls_certificate_for_host(
|
webkit_web_context_allow_tls_certificate_for_host(c->context,
|
||||||
webkit_web_view_get_context(c->view), cert, host);
|
cert, host);
|
||||||
g_free(host);
|
g_free(host);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1110,6 +1113,8 @@ newview(Client *c, WebKitWebView *rv)
|
||||||
/* Webview */
|
/* Webview */
|
||||||
if (rv) {
|
if (rv) {
|
||||||
v = WEBKIT_WEB_VIEW(webkit_web_view_new_with_related_view(rv));
|
v = WEBKIT_WEB_VIEW(webkit_web_view_new_with_related_view(rv));
|
||||||
|
context = webkit_web_view_get_context(v);
|
||||||
|
settings = webkit_web_view_get_settings(v);
|
||||||
} else {
|
} else {
|
||||||
settings = webkit_settings_new_with_settings(
|
settings = webkit_settings_new_with_settings(
|
||||||
"allow-file-access-from-file-urls", curconfig[FileURLsCrossAccess].val.i,
|
"allow-file-access-from-file-urls", curconfig[FileURLsCrossAccess].val.i,
|
||||||
|
@ -1223,6 +1228,9 @@ newview(Client *c, WebKitWebView *rv)
|
||||||
g_signal_connect(G_OBJECT(v), "web-process-terminated",
|
g_signal_connect(G_OBJECT(v), "web-process-terminated",
|
||||||
G_CALLBACK(webprocessterminated), c);
|
G_CALLBACK(webprocessterminated), c);
|
||||||
|
|
||||||
|
c->context = context;
|
||||||
|
c->settings = settings;
|
||||||
|
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue