Only get webkit context and settings once - surf - surf browser, a WebKit based… | |
git clone git://git.suckless.org/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit d3ee6528607d460b61870e69310e732992962073 | |
parent 1f5b8f3bd1f37d4d3dc45d21285f34ef4752dbaa | |
Author: Quentin Rameau <[email protected]> | |
Date: Sun, 10 Apr 2022 18:43:45 +0200 | |
Only get webkit context and settings once | |
Diffstat: | |
M surf.c | 58 ++++++++++++++++++-----------… | |
1 file changed, 33 insertions(+), 25 deletions(-) | |
--- | |
diff --git a/surf.c b/surf.c | |
@@ -101,6 +101,8 @@ typedef struct { | |
typedef struct Client { | |
GtkWidget *win; | |
WebKitWebView *view; | |
+ WebKitSettings *settings; | |
+ WebKitWebContext *context; | |
WebKitWebInspector *inspector; | |
WebKitFindController *finder; | |
WebKitHitTestResult *mousepos; | |
@@ -750,7 +752,6 @@ void | |
setparameter(Client *c, int refresh, ParamName p, const Arg *a) | |
{ | |
GdkRGBA bgcolor = { 0 }; | |
- WebKitSettings *s = webkit_web_view_get_settings(c->view); | |
modparams[p] = curconfig[p].prio; | |
@@ -760,7 +761,7 @@ setparameter(Client *c, int refresh, ParamName p, const Arg… | |
case AccessWebcam: | |
return; /* do nothing */ | |
case CaretBrowsing: | |
- webkit_settings_set_enable_caret_browsing(s, a->i); | |
+ webkit_settings_set_enable_caret_browsing(c->settings, a->i); | |
refresh = 0; | |
break; | |
case Certificate: | |
@@ -769,36 +770,37 @@ setparameter(Client *c, int refresh, ParamName p, const A… | |
return; /* do not update */ | |
case CookiePolicies: | |
webkit_cookie_manager_set_accept_policy( | |
- webkit_web_context_get_cookie_manager( | |
- webkit_web_view_get_context(c->view)), | |
+ webkit_web_context_get_cookie_manager(c->context), | |
cookiepolicy_get()); | |
refresh = 0; | |
break; | |
case DarkMode: | |
g_object_set(gtk_settings_get_default(), | |
"gtk-application-prefer-dark-theme", a->i, NULL); | |
+ return; | |
break; | |
case DiskCache: | |
- webkit_web_context_set_cache_model( | |
- webkit_web_view_get_context(c->view), a->i ? | |
+ webkit_web_context_set_cache_model(c->context, a->i ? | |
WEBKIT_CACHE_MODEL_WEB_BROWSER : | |
WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER); | |
return; /* do not update */ | |
case DefaultCharset: | |
- webkit_settings_set_default_charset(s, a->v); | |
+ webkit_settings_set_default_charset(c->settings, a->v); | |
return; /* do not update */ | |
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 */ | |
case FileURLsCrossAccess: | |
- webkit_settings_set_allow_file_access_from_file_urls(s, a->i); | |
- webkit_settings_set_allow_universal_access_from_file_urls(s, a… | |
+ webkit_settings_set_allow_file_access_from_file_urls( | |
+ c->settings, a->i); | |
+ webkit_settings_set_allow_universal_access_from_file_urls( | |
+ c->settings, a->i); | |
return; /* do not update */ | |
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 */ | |
case FrameFlattening: | |
- webkit_settings_set_enable_frame_flattening(s, a->i); | |
+ webkit_settings_set_enable_frame_flattening(c->settings, a->i); | |
break; | |
case Geolocation: | |
refresh = 0; | |
@@ -808,21 +810,22 @@ setparameter(Client *c, int refresh, ParamName p, const A… | |
webkit_web_view_set_background_color(c->view, &bgcolor… | |
return; /* do not update */ | |
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 */ | |
case Java: | |
- webkit_settings_set_enable_java(s, a->i); | |
+ webkit_settings_set_enable_java(c->settings, a->i); | |
return; /* do not update */ | |
case JavaScript: | |
- webkit_settings_set_enable_javascript(s, a->i); | |
+ webkit_settings_set_enable_javascript(c->settings, a->i); | |
break; | |
case KioskMode: | |
return; /* do nothing */ | |
case LoadImages: | |
- webkit_settings_set_auto_load_images(s, a->i); | |
+ webkit_settings_set_auto_load_images(c->settings, a->i); | |
break; | |
case MediaManualPlay: | |
- webkit_settings_set_media_playback_requires_user_gesture(s, a-… | |
+ webkit_settings_set_media_playback_requires_user_gesture( | |
+ c->settings, a->i); | |
break; | |
case PreferredLanguages: | |
return; /* do nothing */ | |
@@ -839,20 +842,20 @@ setparameter(Client *c, int refresh, ParamName p, const A… | |
case ShowIndicators: | |
break; | |
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 */ | |
case SiteQuirks: | |
- webkit_settings_set_enable_site_specific_quirks(s, a->i); | |
+ webkit_settings_set_enable_site_specific_quirks( | |
+ c->settings, a->i); | |
break; | |
case SpellChecking: | |
webkit_web_context_set_spell_checking_enabled( | |
- webkit_web_view_get_context(c->view), a->i); | |
+ c->context, a->i); | |
return; /* do not update */ | |
case SpellLanguages: | |
return; /* do nothing */ | |
case StrictTLS: | |
- webkit_web_context_set_tls_errors_policy( | |
- webkit_web_view_get_context(c->view), a->i ? | |
+ webkit_web_context_set_tls_errors_policy(c->context, a->i ? | |
WEBKIT_TLS_ERRORS_POLICY_FAIL : | |
WEBKIT_TLS_ERRORS_POLICY_IGNORE); | |
break; | |
@@ -864,7 +867,7 @@ setparameter(Client *c, int refresh, ParamName p, const Arg… | |
refresh = 0; | |
break; | |
case WebGL: | |
- webkit_settings_set_enable_webgl(s, a->i); | |
+ webkit_settings_set_enable_webgl(c->settings, a->i); | |
break; | |
case ZoomLevel: | |
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://"))) { | |
uri += sizeof("https://") - 1; | |
host = g_strndup(uri, strchr(uri, '/') - uri); | |
- webkit_web_context_allow_tls_certificate_for_host( | |
- webkit_web_view_get_context(c->view), cert, host); | |
+ webkit_web_context_allow_tls_certificate_for_host(c->context, | |
+ cert, host); | |
g_free(host); | |
} | |
@@ -1110,6 +1113,8 @@ newview(Client *c, WebKitWebView *rv) | |
/* Webview */ | |
if (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 { | |
settings = webkit_settings_new_with_settings( | |
"allow-file-access-from-file-urls", curconfig[FileURLsCross… | |
@@ -1223,6 +1228,9 @@ newview(Client *c, WebKitWebView *rv) | |
g_signal_connect(G_OBJECT(v), "web-process-terminated", | |
G_CALLBACK(webprocessterminated), c); | |
+ c->context = context; | |
+ c->settings = settings; | |
+ | |
return v; | |
} | |