[Xfce4-commits] <midori:master> Move icon path setup and clearing into Midori.Paths

Christian Dywan noreply at xfce.org
Fri Dec 7 20:20:03 CET 2012


Updating branch refs/heads/master
         to d107b6e07496eb6eeca4ee10bfaa9d5afb9844a0 (commit)
       from 08d8ceb253f8e5ac47340678e292e6c17b5bbb61 (commit)

commit d107b6e07496eb6eeca4ee10bfaa9d5afb9844a0
Author: Christian Dywan <christian at twotoasts.de>
Date:   Fri Dec 7 18:53:14 2012 +0100

    Move icon path setup and clearing into Midori.Paths

 katze/katze-net.c           |    3 +-
 katze/katze-net.h           |    3 ++
 katze/midori-paths.vala     |   15 ++++++++++
 midori/midori-browser.c     |   60 +++++++++++++------------------------------
 midori/midori-frontend.c    |    2 +-
 midori/midori-privatedata.c |   17 +-----------
 midori/midori-session.c     |    6 ----
 midori/midori-view.c        |    9 +-----
 midori/midori-view.h        |    3 --
 9 files changed, 42 insertions(+), 76 deletions(-)

diff --git a/katze/katze-net.c b/katze/katze-net.c
index 05841e5..fc82510 100644
--- a/katze/katze-net.c
+++ b/katze/katze-net.c
@@ -22,7 +22,6 @@
 
 #include <glib/gstdio.h>
 #include <libsoup/soup.h>
-#include <webkit/webkit.h>
 
 struct _KatzeNet
 {
@@ -78,6 +77,7 @@ katze_net_priv_free (KatzeNetPriv* priv)
     g_slice_free (KatzeNetPriv, priv);
 }
 
+#if !WEBKIT_CHECK_VERSION (1, 8, 0)
 gchar*
 katze_net_get_cached_path (KatzeNet*    net,
                            const gchar* uri,
@@ -110,6 +110,7 @@ katze_net_get_cached_path (KatzeNet*    net,
     g_free (cached_filename);
     return cached_path;
 }
+#endif
 
 static void
 katze_net_got_body_cb (SoupMessage*  msg,
diff --git a/katze/katze-net.h b/katze/katze-net.h
index eea2df4..87c0912 100644
--- a/katze/katze-net.h
+++ b/katze/katze-net.h
@@ -12,6 +12,7 @@
 #ifndef __KATZE_NET_H__
 #define __KATZE_NET_H__
 
+#include <webkit/webkit.h>
 #include "katze-utils.h"
 
 G_BEGIN_DECLS
@@ -66,10 +67,12 @@ katze_net_load_uri                       (KatzeNet*          net,
                                           KatzeNetTransferCb transfer_cb,
                                           gpointer           user_data);
 
+#if !WEBKIT_CHECK_VERSION (1, 8, 0)
 gchar*
 katze_net_get_cached_path                (KatzeNet*          net,
                                           const gchar*       uri,
                                           const gchar*       subfolder);
+#endif
 
 G_END_DECLS
 
diff --git a/katze/midori-paths.vala b/katze/midori-paths.vala
index 6c1ed41..2f62a90 100644
--- a/katze/midori-paths.vala
+++ b/katze/midori-paths.vala
@@ -116,6 +116,10 @@ namespace Midori {
                 tmp_dir = Path.build_path (Path.DIR_SEPARATOR_S,
                     Environment.get_tmp_dir (), "midori-" + Environment.get_user_name ());
             }
+#if HAVE_WEBKIT_1_8_0
+            if (user_data_dir != null)
+                WebKit.get_favicon_database ().set_path (Path.build_filename (user_data_dir, "webkit", "icondatabase"));
+#endif
             if (strcmp (Environment.get_variable ("MIDORI_DEBUG"), "paths") == 0) {
                 stdout.printf ("config: %s\ncache: %s\nuser_data: %s\ntmp: %s\n",
                                config_dir, cache_dir, user_data_dir, tmp_dir);
@@ -364,6 +368,17 @@ namespace Midori {
             #endif
         }
 
+        public static void clear_icons () {
+            assert (cache_dir != null);
+            assert (user_data_dir != null);
+#if HAVE_WEBKIT_1_8_0
+            WebKit.get_favicon_database ().clear ();
+#endif
+            /* FIXME: Exclude search engine icons */
+            remove_path (Path.build_filename (cache_dir, "icons"));
+            remove_path (Path.build_filename (user_data_dir, "webkit", "icondatabase"));
+        }
+
         public static Gdk.Pixbuf? get_icon (string? uri, Gtk.Widget? widget) {
             if (!Midori.URI.is_resource (uri))
                 return null;
diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index c773c51..df60c75 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -2411,23 +2411,18 @@ _action_add_desktop_shortcut_activate (GtkAction*     action,
     KatzeItem* item = midori_view_get_proxy_item (MIDORI_VIEW (tab));
     const gchar* app_name = katze_item_get_name (item);
     gchar* app_exec = g_strconcat ("midori -a ", katze_item_get_uri (item), NULL);
-    const gchar* icon_uri = midori_view_get_icon_uri (MIDORI_VIEW (tab));
-    gchar* app_icon;
     GKeyFile* keyfile = g_key_file_new ();
-    gchar* filename = g_strconcat (app_name, ".desktop", NULL);
-    gchar* app_dir;
-    int i = 0;
-    while (filename[i] != '\0')
-    {
-        if (filename[i] == '/')
-            filename[i] = '_';
-        i++;
-    }
-    app_dir = g_build_filename (g_get_user_data_dir (),
-                                "applications", filename, NULL);
-    app_icon = katze_net_get_cached_path (NULL, icon_uri, "icons");
+    gchar* filename = g_strdelimit (g_strconcat (app_name, ".desktop", NULL), "/", '_');
+    gchar* app_dir = g_build_filename (g_get_user_data_dir (), "applications", filename, NULL);
+    #if WEBKIT_CHECK_VERSION (1, 8, 0)
+    /* FIXME: midori_paths_get_icon */
+    gchar* app_icon = g_strdup (STOCK_WEB_BROWSER);
+    #else
+    const gchar* icon_uri = midori_view_get_icon_uri (MIDORI_VIEW (tab));
+    gchar* app_icon = katze_net_get_cached_path (NULL, icon_uri, "icons");
     if (!g_file_test (app_icon, G_FILE_TEST_EXISTS))
         katze_assign (app_icon, g_strdup (STOCK_WEB_BROWSER));
+    #endif
     g_key_file_set_string (keyfile, "Desktop Entry", "Version", "1.0");
     g_key_file_set_string (keyfile, "Desktop Entry", "Type", "Application");
     g_key_file_set_string (keyfile, "Desktop Entry", "Name", app_name);
@@ -2439,6 +2434,7 @@ _action_add_desktop_shortcut_activate (GtkAction*     action,
     g_free (app_dir);
     g_free (filename);
     g_free (app_exec);
+    g_free (app_icon);
     g_key_file_free (keyfile);
     #elif defined(GDK_WINDOWING_QUARTZ)
     /* TODO: Implement */
@@ -6422,7 +6418,6 @@ midori_browser_toolbar_popup_context_menu_history (MidoriBrowser* browser,
     const gint step = back ? -1 : 1;
     gint steps = step;
     GtkWidget* menu;
-    GtkWidget* menu_item;
     WebKitWebBackForwardList* list;
     WebKitWebHistoryItem* current_item;
     WebKitWebHistoryItem* history_item;
@@ -6448,36 +6443,17 @@ midori_browser_toolbar_popup_context_menu_history (MidoriBrowser* browser,
 
     for (; (history_item = history_next (list)); history_action (list), steps += step)
     {
-        #if WEBKIT_CHECK_VERSION (1, 3, 13)
-        gchar* icon_uri;
-        gchar* icon_path;
-        GdkPixbuf* pixbuf;
-        GdkPixbuf* pixbuf_scaled = NULL;
-        #endif
-
-        menu_item = gtk_image_menu_item_new_with_label (
+        const gchar* uri = webkit_web_history_item_get_uri (history_item);
+        GtkWidget* menu_item = gtk_image_menu_item_new_with_label (
             webkit_web_history_item_get_title (history_item));
-        #if WEBKIT_CHECK_VERSION (1, 3, 13)
-        icon_uri = webkit_icon_database_get_icon_uri (webkit_get_icon_database (),
-            webkit_web_history_item_get_uri (history_item));
-        icon_path = katze_net_get_cached_path (NULL, icon_uri, "icons");
-        if ((pixbuf = gdk_pixbuf_new_from_file (icon_path, NULL)))
+        GdkPixbuf* pixbuf;
+        if ((pixbuf = midori_paths_get_icon (uri, widget)))
         {
-            gint w = 16, h = 16;
-            gtk_icon_size_lookup_for_settings (gtk_widget_get_settings (widget),
-                GTK_ICON_SIZE_MENU, &w, &h);
-            pixbuf_scaled = gdk_pixbuf_scale_simple (pixbuf,
-                w, h, GDK_INTERP_BILINEAR);
+            gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item),
+                gtk_image_new_from_pixbuf (pixbuf));
+            g_object_unref (pixbuf);
         }
-        gtk_image_menu_item_set_image (
-            GTK_IMAGE_MENU_ITEM (menu_item),
-            pixbuf_scaled ? gtk_image_new_from_pixbuf (pixbuf_scaled) :
-            gtk_image_new_from_stock (GTK_STOCK_FILE, GTK_ICON_SIZE_MENU));
-        g_free (icon_uri);
-        g_free (icon_path);
-        #endif
-        g_object_set_data (G_OBJECT (menu_item), "uri",
-            (gpointer) webkit_web_history_item_get_uri (history_item));
+        g_object_set_data (G_OBJECT (menu_item), "uri", (gpointer)uri);
         g_object_set_data (G_OBJECT (menu_item), "steps", GINT_TO_POINTER (steps));
         gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
         g_signal_connect (G_OBJECT (menu_item), "activate",
diff --git a/midori/midori-frontend.c b/midori/midori-frontend.c
index b6c68b9..142619d 100644
--- a/midori/midori-frontend.c
+++ b/midori/midori-frontend.c
@@ -250,7 +250,7 @@ midori_browser_privacy_preferences_cb (MidoriBrowser*    browser,
 static void
 midori_app_add_browser_cb (MidoriApp*     app,
                            MidoriBrowser* browser,
-                           KatzeNet*      net)
+                           gpointer       user_data)
 {
     GtkWidget* panel;
     GtkWidget* addon;
diff --git a/midori/midori-privatedata.c b/midori/midori-privatedata.c
index 48504cd..89fdce6 100644
--- a/midori/midori-privatedata.c
+++ b/midori/midori-privatedata.c
@@ -291,21 +291,6 @@ midori_clear_web_cache_cb (void)
 }
 #endif
 
-static void
-midori_clear_page_icons_cb (void)
-{
-    gchar* cache = g_build_filename (midori_paths_get_cache_dir (), "icons", NULL);
-    /* FIXME: Exclude search engine icons */
-    midori_paths_remove_path (cache);
-    g_free (cache);
-    cache = g_build_filename (midori_paths_get_user_data_dir (), "webkit", "icondatabase", NULL);
-    midori_paths_remove_path (cache);
-    g_free (cache);
-    #if WEBKIT_CHECK_VERSION (1, 8, 0)
-    webkit_favicon_database_clear (webkit_get_favicon_database ());
-    #endif
-}
-
 void
 midori_private_data_register_built_ins ()
 {
@@ -320,7 +305,7 @@ midori_private_data_register_built_ins ()
         G_CALLBACK (midori_clear_web_cache_cb));
     #endif
     midori_private_data_register_item ("page-icons", _("Website icons"),
-        G_CALLBACK (midori_clear_page_icons_cb));
+        G_CALLBACK (midori_paths_clear_icons));
 }
 
 void
diff --git a/midori/midori-session.c b/midori/midori-session.c
index be2f09a..17b5166 100644
--- a/midori/midori-session.c
+++ b/midori/midori-session.c
@@ -298,12 +298,6 @@ midori_load_soup_session_full (gpointer settings)
         katze_object_get_int (settings, "maximum-cache-size") * 1024 * 1024);
     soup_cache_load (SOUP_CACHE (feature));
     #endif
-
-    #if WEBKIT_CHECK_VERSION (1, 8, 0)
-    katze_assign (config_file, g_build_filename (midori_paths_get_user_data_dir (),
-                                                 "webkit", "icondatabase", NULL));
-    webkit_favicon_database_set_path (webkit_get_favicon_database (), config_file);
-    #endif
     g_free (config_file);
 
     return FALSE;
diff --git a/midori/midori-view.c b/midori/midori-view.c
index ea9e354..c48a752 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -561,13 +561,7 @@ static void
 _midori_web_view_load_icon (MidoriView* view)
 {
     GdkPixbuf* pixbuf = NULL;
-    gint icon_width, icon_height;
-    GtkSettings* settings;
-
     #if WEBKIT_CHECK_VERSION (1, 8, 0)
-    settings = gtk_widget_get_settings (view->web_view);
-    gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU,
-                                       &icon_width, &icon_height);
     if ((pixbuf = webkit_web_view_try_get_favicon_pixbuf (
         WEBKIT_WEB_VIEW (view->web_view), 16, 16)))
         midori_view_apply_icon (view, pixbuf, view->icon_uri);
@@ -620,7 +614,8 @@ _midori_web_view_load_icon (MidoriView* view)
 
     if (pixbuf)
     {
-        settings = gtk_widget_get_settings (view->web_view);
+        gint icon_width, icon_height;
+        GtkSettings* settings = gtk_widget_get_settings (view->web_view);
         gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU,
                                            &icon_width, &icon_height);
         pixbuf_scaled = gdk_pixbuf_scale_simple (pixbuf, icon_width,
diff --git a/midori/midori-view.h b/midori/midori-view.h
index a62e69d..40ede7c 100644
--- a/midori/midori-view.h
+++ b/midori/midori-view.h
@@ -60,9 +60,6 @@ GType
 midori_view_get_type                   (void) G_GNUC_CONST;
 
 GtkWidget*
-midori_view_new                        (KatzeNet*          net);
-
-GtkWidget*
 midori_view_new_with_title             (const gchar*       title,
                                         MidoriWebSettings* settings,
                                         gboolean           append);


More information about the Xfce4-commits mailing list