fix stylesheet interna.
* no more segfault when running `surf -m` * allow to enable custom styles after `surf -m` with mod+shift+m * use enablestyles instead of the webkit-setting, which clears things up a bit Signed-off-by: Christoph Lohmann <20h@r-36.net>
This commit is contained in:
parent
344efec3fb
commit
90de5cdd15
1 changed files with 12 additions and 19 deletions
31
surf.c
31
surf.c
|
@ -573,6 +573,9 @@ static gchar *
|
|||
getstyle(const char *uri) {
|
||||
int i;
|
||||
|
||||
if(stylefile != NULL)
|
||||
return g_strconcat("file://", stylefile, NULL);
|
||||
|
||||
for(i = 0; i < LENGTH(styles); i++) {
|
||||
if(styles[i].regex && !regexec(&(styles[i].re), uri, 0,
|
||||
NULL, 0)) {
|
||||
|
@ -704,7 +707,7 @@ loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c) {
|
|||
}
|
||||
setatom(c, AtomUri, uri);
|
||||
|
||||
if(stylefile == NULL && enablestyles) {
|
||||
if(enablestyles) {
|
||||
g_object_set(G_OBJECT(set), "user-stylesheet-uri",
|
||||
getstyle(uri), NULL);
|
||||
}
|
||||
|
@ -770,7 +773,7 @@ newclient(void) {
|
|||
GdkGeometry hints = { 1, 1 };
|
||||
GdkScreen *screen;
|
||||
gdouble dpi;
|
||||
char *uri = NULL, *ua;
|
||||
char *ua;
|
||||
|
||||
if(!(c = calloc(1, sizeof(Client))))
|
||||
die("Cannot malloc!\n");
|
||||
|
@ -900,9 +903,9 @@ newclient(void) {
|
|||
if(!(ua = getenv("SURF_USERAGENT")))
|
||||
ua = useragent;
|
||||
g_object_set(G_OBJECT(settings), "user-agent", ua, NULL);
|
||||
if (stylefile != NULL) {
|
||||
uri = g_strconcat("file://", stylefile, NULL);
|
||||
g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL);
|
||||
if (enablestyles) {
|
||||
g_object_set(G_OBJECT(settings), "user-stylesheet-uri",
|
||||
getstyle("about:blank"), NULL);
|
||||
}
|
||||
g_object_set(G_OBJECT(settings), "auto-load-images", loadimages,
|
||||
NULL);
|
||||
|
@ -958,9 +961,6 @@ newclient(void) {
|
|||
fullscreen(c, NULL);
|
||||
}
|
||||
|
||||
if(stylefile != NULL)
|
||||
g_free(uri);
|
||||
|
||||
setatom(c, AtomFind, "");
|
||||
setatom(c, AtomUri, "about:blank");
|
||||
if(hidebackground)
|
||||
|
@ -1192,7 +1192,7 @@ setup(void) {
|
|||
scriptfile = buildpath(scriptfile);
|
||||
cachefolder = buildpath(cachefolder);
|
||||
styledir = buildpath(styledir);
|
||||
if(stylefile == NULL && enablestyles) {
|
||||
if(stylefile == NULL) {
|
||||
for(i = 0; i < LENGTH(styles); i++) {
|
||||
if(regcomp(&(styles[i].re), styles[i].regex,
|
||||
REG_EXTENDED)) {
|
||||
|
@ -1386,13 +1386,8 @@ togglestyle(Client *c, const Arg *arg) {
|
|||
WebKitWebSettings *settings = webkit_web_view_get_settings(c->view);
|
||||
char *uri;
|
||||
|
||||
g_object_get(G_OBJECT(settings), "user-stylesheet-uri", &uri, NULL);
|
||||
if(stylefile == NULL && enablestyles) {
|
||||
uri = (uri && uri[0])? g_strdup("") : getstyle(geturi(c));
|
||||
} else {
|
||||
uri = uri[0]? g_strdup("") : g_strconcat("file://",
|
||||
stylefile, NULL);
|
||||
}
|
||||
enablestyles = !enablestyles;
|
||||
uri = enablestyles ? getstyle(geturi(c)) : g_strdup("");
|
||||
g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL);
|
||||
|
||||
updatetitle(c);
|
||||
|
@ -1401,7 +1396,6 @@ togglestyle(Client *c, const Arg *arg) {
|
|||
static void
|
||||
gettogglestat(Client *c){
|
||||
gboolean value;
|
||||
char *uri;
|
||||
int p = 0;
|
||||
WebKitWebSettings *settings = webkit_web_view_get_settings(c->view);
|
||||
|
||||
|
@ -1424,8 +1418,7 @@ gettogglestat(Client *c){
|
|||
g_object_get(G_OBJECT(settings), "enable-plugins", &value, NULL);
|
||||
togglestat[p++] = value? 'V': 'v';
|
||||
|
||||
g_object_get(G_OBJECT(settings), "user-stylesheet-uri", &uri, NULL);
|
||||
togglestat[p++] = (uri && uri[0]) ? 'M': 'm';
|
||||
togglestat[p++] = enablestyles ? 'M': 'm';
|
||||
|
||||
togglestat[p] = '\0';
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue