[Xfce4-commits] <midori:master> Optimize icon lookups and tag received icon-loaded
Christian Dywan
noreply at xfce.org
Thu Jan 24 01:30:01 CET 2013
Updating branch refs/heads/master
to 05a3233396b531f3cf9fef033508412f8e47f6fa (commit)
from b82ae64b2866e8cd068bddb893b82899fdb13523 (commit)
commit 05a3233396b531f3cf9fef033508412f8e47f6fa
Author: Christian Dywan <christian at twotoasts.de>
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",
More information about the Xfce4-commits
mailing list