[Xfce4-commits] <midori:master> Support user-stylesheet-uri again through new API

Christian Dywan noreply at xfce.org
Sun Oct 30 16:30:01 CET 2011


Updating branch refs/heads/master
         to ea15198b343b5359b3e13ee196a277c121e95d1d (commit)
       from 34e0c98cb7bd4b34b2a2e80ac3f9eff5144f9c73 (commit)

commit ea15198b343b5359b3e13ee196a277c121e95d1d
Author: Christian Dywan <christian at twotoasts.de>
Date:   Sun Oct 30 16:26:56 2011 +0100

    Support user-stylesheet-uri again through new API
    
    Related to: https://bugs.launchpad.net/midori/+bug/826441

 midori/main.c               |    1 +
 midori/midori-websettings.c |   29 ++++++++++++++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletions(-)

diff --git a/midori/main.c b/midori/main.c
index 4ee4d3c..7906c9d 100644
--- a/midori/main.c
+++ b/midori/main.c
@@ -609,6 +609,7 @@ settings_notify_cb (MidoriWebSettings* settings,
 
     /* Skip state related properties to avoid disk IO */
     if ((pspec && g_str_has_prefix (pspec->name, "last-window-"))
+     || (pspec && g_str_has_prefix (pspec->name, "user-stylesheet-uri"))
      || (pspec && g_str_has_prefix (pspec->name, "last-panel-")))
         return;
 
diff --git a/midori/midori-websettings.c b/midori/midori-websettings.c
index 1b0ca64..fea9462 100644
--- a/midori/midori-websettings.c
+++ b/midori/midori-websettings.c
@@ -94,6 +94,7 @@ struct _MidoriWebSettings
     gboolean strip_referer;
     gboolean enforce_font_family;
     gboolean flash_window_on_bg_tabs;
+    gchar* user_stylesheet_uri;
     GHashTable* user_stylesheets;
 };
 
@@ -177,6 +178,7 @@ enum
     PROP_ENABLE_DNS_PREFETCHING,
     PROP_STRIP_REFERER,
     PROP_ENFORCE_FONT_FAMILY,
+    PROP_USER_STYLESHEET_URI,
 };
 
 GType
@@ -1069,6 +1071,15 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
                                      _("Override fonts picked by websites with user preferences"),
                                      FALSE,
                                      flags));
+
+    g_object_class_install_property (gobject_class,
+                                     PROP_USER_STYLESHEET_URI,
+                                     g_param_spec_string (
+                                     "user-stylesheet-uri",
+                                     "User stylesheet URI",
+                                     "Load stylesheets from a local URI",
+                                     NULL,
+                                     flags));
 }
 
 static void
@@ -1115,6 +1126,7 @@ midori_web_settings_init (MidoriWebSettings* web_settings)
     web_settings->http_proxy = NULL;
     web_settings->open_popups_in_tabs = TRUE;
     web_settings->kinetic_scrolling = TRUE;
+    web_settings->user_stylesheet_uri = NULL;
     web_settings->user_stylesheets = NULL;
 
     g_signal_connect (web_settings, "notify::default-encoding",
@@ -1138,6 +1150,7 @@ midori_web_settings_finalize (GObject* object)
     katze_assign (web_settings->location_entry_search, NULL);
     katze_assign (web_settings->http_proxy, NULL);
     katze_assign (web_settings->ident_string, NULL);
+    katze_assign (web_settings->user_stylesheet_uri, NULL);
     if (web_settings->user_stylesheets != NULL)
         g_hash_table_destroy (web_settings->user_stylesheets);
 
@@ -1495,6 +1508,17 @@ midori_web_settings_set_property (GObject*      object,
     case PROP_FLASH_WINDOW_ON_BG_TABS:
         web_settings->flash_window_on_bg_tabs = g_value_get_boolean (value);
         break;
+    case PROP_USER_STYLESHEET_URI:
+        if ((web_settings->user_stylesheet_uri = g_value_dup_string (value)))
+        {
+            gchar* css = g_strdup_printf ("@import url(\"%s\"\n);",
+                                          web_settings->user_stylesheet_uri);
+            midori_web_settings_add_style (web_settings, "user-stylesheet-uri", css);
+            g_free (css);
+        }
+        else
+            midori_web_settings_remove_style (web_settings, "user-stylesheet-uri");
+        break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
         break;
@@ -1756,6 +1780,9 @@ midori_web_settings_get_property (GObject*    object,
     case PROP_FLASH_WINDOW_ON_BG_TABS:
         g_value_set_boolean (value, web_settings->flash_window_on_bg_tabs);
         break;
+    case PROP_USER_STYLESHEET_URI:
+        g_value_set_string (value, web_settings->user_stylesheet_uri);
+        break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
         break;
@@ -1797,7 +1824,7 @@ midori_web_settings_process_stylesheets (MidoriWebSettings* settings)
     /* data: uri prefix from Source/WebCore/page/Page.cpp:700 in WebKit */
     encoded = g_base64_encode ((guchar*)css->str, css->len);
     base64 = g_strdup_printf ("data:text/css;charset=utf-8;base64,%s", encoded);
-    g_object_set (settings, "user-stylesheet-uri", base64, NULL);
+    g_object_set (settings, "WebKitWebSettings::user-stylesheet-uri", base64, NULL);
 
     g_free (encoded);
     g_free (base64);


More information about the Xfce4-commits mailing list