fix stylesheet interna. - surf - Surf web browser.
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 90de5cdd15cf5cab330f1a0ea583be7a9682a030
 (DIR) parent 344efec3fb932a9c5baae582fe70c72a0bc4a747
 (HTM) Author: Markus Teich <markus.teich@stusta.mhn.de>
       Date:   Tue, 20 Jan 2015 16:13:31 +0100
       
       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>
       
       Diffstat:
         surf.c                              |      31 ++++++++++++-------------------
       
       1 file changed, 12 insertions(+), 19 deletions(-)
       ---
 (DIR) diff --git a/surf.c b/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';
        }