Updating branch refs/heads/master
to 05a3233396b531f3cf9fef033508412f8e47f6fa (commit)
from b82ae64b2866e8cd068bddb893b82899fdb13523 (commit)
commit 05a3233396b531f3cf9fef033508412f8e47f6fa
Author: Christian Dywan <[email protected]>
Date: Thu Jan 24 01:24:17 2013 +0100
Optimize icon lookups and tag received icon-loaded
katze/katze-item.c | 24 +++++++++++++++---------
katze/midori-paths.vala | 11 +++++++----
2 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/katze/katze-item.c b/katze/katze-item.c
index 01300c1..4de44cf 100644
--- a/katze/katze-item.c
+++ b/katze/katze-item.c
@@ -445,16 +445,12 @@ katze_item_get_pixbuf (KatzeItem* item,
g_return_val_if_fail (KATZE_IS_ITEM (item), NULL);
+ if (KATZE_ITEM_IS_FOLDER (item))
+ return gtk_widget_render_icon (widget, GTK_STOCK_DIRECTORY,
GTK_ICON_SIZE_MENU, NULL);
if ((pixbuf = midori_paths_get_icon (item->uri, widget)))
return pixbuf;
if ((pixbuf = midori_paths_get_icon (katze_item_get_icon (item), widget)))
return pixbuf;
- if (widget != NULL)
- {
- if (KATZE_ITEM_IS_FOLDER (item))
- return gtk_widget_render_icon (widget, GTK_STOCK_DIRECTORY,
GTK_ICON_SIZE_MENU, NULL);
- return gtk_widget_render_icon (widget, GTK_STOCK_FILE,
GTK_ICON_SIZE_MENU, NULL);
- }
return NULL;
}
@@ -469,10 +465,18 @@ katze_item_icon_loaded_cb (WebKitIconDatabase*
database,
const gchar* frame_uri,
GtkWidget* image)
{
+ /* This signal fires extremely often (WebKit bug?), we must throttle it */
+ if (g_object_get_data (G_OBJECT (image), "midori-icon-loaded"))
+ return;
+
KatzeItem* item = g_object_get_data (G_OBJECT (image), "KatzeItem");
- GdkPixbuf* pixbuf = katze_item_get_pixbuf (item, image);
- gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
- g_object_unref (pixbuf);
+ GdkPixbuf* pixbuf = midori_paths_get_icon (frame_uri, image);
+ if (pixbuf != NULL)
+ {
+ gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
+ g_object_unref (pixbuf);
+ g_object_set_data (G_OBJECT (image), "midori-icon-loaded", (void*)1);
+ }
}
#endif
@@ -519,6 +523,8 @@ katze_item_get_image (KatzeItem* item,
gtk_widget_show (image);
if (pixbuf != NULL)
g_object_unref (pixbuf);
+ if (KATZE_ITEM_IS_FOLDER (item))
+ return image;
#if WEBKIT_CHECK_VERSION (1, 8, 0)
g_signal_connect (webkit_get_favicon_database (), "icon-loaded",
G_CALLBACK (katze_item_icon_loaded_cb), image);
diff --git a/katze/midori-paths.vala b/katze/midori-paths.vala
index 5cced9f..50de349 100644
--- a/katze/midori-paths.vala
+++ b/katze/midori-paths.vala
@@ -112,12 +112,15 @@ namespace Midori {
tmp_dir = Path.build_path (Path.DIR_SEPARATOR_S,
Environment.get_tmp_dir (), "midori-" +
Environment.get_user_name ());
}
+#if HAVE_WEBKIT_1_3_13
+ if (user_data_dir != null) {
+ string folder = Path.build_filename (user_data_dir, "webkit",
"icondatabase");
#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"));
+ WebKit.get_favicon_database ().set_path (folder);
#elif HAVE_WEBKIT_1_3_13
- if (user_data_dir != null)
- WebKit.get_icon_database ().set_path (Path.build_filename
(user_data_dir, "webkit", "icondatabase"));
+ WebKit.get_icon_database ().set_path (folder);
+#endif
+ }
#endif
if (strcmp (Environment.get_variable ("MIDORI_DEBUG"), "paths") ==
0) {
stdout.printf ("config: %s\ncache: %s\nuser_data: %s\ntmp:
%s\n",
_______________________________________________
Xfce4-commits mailing list
[email protected]
https://mail.xfce.org/mailman/listinfo/xfce4-commits